webpackJsonp([38],[
/* 0 */,
/* 1 */,
/* 2 */,
/* 3 */,
/* 4 */,
/* 5 */,
/* 6 */,
/* 7 */,
/* 8 */
/***/ (function(module, exports) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	// css base code, injected by the css-loader
	module.exports = function() {
		var list = [];

		// return the list of modules as css string
		list.toString = function toString() {
			var result = [];
			for(var i = 0; i < this.length; i++) {
				var item = this[i];
				if(item[2]) {
					result.push("@media " + item[2] + "{" + item[1] + "}");
				} else {
					result.push(item[1]);
				}
			}
			return result.join("");
		};

		// import a list of modules into the list
		list.i = function(modules, mediaQuery) {
			if(typeof modules === "string")
				modules = [[null, modules, ""]];
			var alreadyImportedModules = {};
			for(var i = 0; i < this.length; i++) {
				var id = this[i][0];
				if(typeof id === "number")
					alreadyImportedModules[id] = true;
			}
			for(i = 0; i < modules.length; i++) {
				var item = modules[i];
				// skip already imported module
				// this implementation is not 100% perfect for weird media query combinations
				//  when a module is imported multiple times with different media queries.
				//  I hope this will never occur (Hey this way we have smaller bundles)
				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
					if(mediaQuery && !item[2]) {
						item[2] = mediaQuery;
					} else if(mediaQuery) {
						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
					}
					list.push(item);
				}
			}
		};
		return list;
	};


/***/ }),
/* 9 */,
/* 10 */,
/* 11 */,
/* 12 */,
/* 13 */,
/* 14 */,
/* 15 */,
/* 16 */,
/* 17 */,
/* 18 */,
/* 19 */,
/* 20 */,
/* 21 */,
/* 22 */,
/* 23 */,
/* 24 */,
/* 25 */,
/* 26 */,
/* 27 */,
/* 28 */,
/* 29 */,
/* 30 */,
/* 31 */,
/* 32 */,
/* 33 */,
/* 34 */,
/* 35 */,
/* 36 */,
/* 37 */,
/* 38 */,
/* 39 */,
/* 40 */,
/* 41 */,
/* 42 */,
/* 43 */,
/* 44 */,
/* 45 */,
/* 46 */,
/* 47 */,
/* 48 */,
/* 49 */,
/* 50 */,
/* 51 */,
/* 52 */,
/* 53 */,
/* 54 */,
/* 55 */,
/* 56 */,
/* 57 */,
/* 58 */,
/* 59 */,
/* 60 */,
/* 61 */,
/* 62 */,
/* 63 */,
/* 64 */,
/* 65 */,
/* 66 */,
/* 67 */,
/* 68 */,
/* 69 */,
/* 70 */,
/* 71 */,
/* 72 */,
/* 73 */,
/* 74 */,
/* 75 */,
/* 76 */,
/* 77 */,
/* 78 */,
/* 79 */,
/* 80 */,
/* 81 */,
/* 82 */,
/* 83 */,
/* 84 */,
/* 85 */,
/* 86 */,
/* 87 */,
/* 88 */,
/* 89 */,
/* 90 */,
/* 91 */,
/* 92 */,
/* 93 */,
/* 94 */,
/* 95 */,
/* 96 */,
/* 97 */,
/* 98 */,
/* 99 */,
/* 100 */,
/* 101 */,
/* 102 */,
/* 103 */,
/* 104 */,
/* 105 */,
/* 106 */,
/* 107 */,
/* 108 */,
/* 109 */,
/* 110 */,
/* 111 */,
/* 112 */,
/* 113 */,
/* 114 */,
/* 115 */,
/* 116 */,
/* 117 */,
/* 118 */,
/* 119 */,
/* 120 */,
/* 121 */,
/* 122 */,
/* 123 */,
/* 124 */,
/* 125 */,
/* 126 */,
/* 127 */,
/* 128 */,
/* 129 */,
/* 130 */,
/* 131 */,
/* 132 */,
/* 133 */,
/* 134 */,
/* 135 */,
/* 136 */,
/* 137 */,
/* 138 */,
/* 139 */,
/* 140 */,
/* 141 */,
/* 142 */,
/* 143 */,
/* 144 */,
/* 145 */,
/* 146 */,
/* 147 */,
/* 148 */,
/* 149 */,
/* 150 */,
/* 151 */,
/* 152 */,
/* 153 */,
/* 154 */,
/* 155 */,
/* 156 */,
/* 157 */,
/* 158 */,
/* 159 */,
/* 160 */,
/* 161 */,
/* 162 */,
/* 163 */,
/* 164 */,
/* 165 */,
/* 166 */,
/* 167 */,
/* 168 */,
/* 169 */,
/* 170 */,
/* 171 */,
/* 172 */,
/* 173 */,
/* 174 */,
/* 175 */,
/* 176 */,
/* 177 */,
/* 178 */,
/* 179 */,
/* 180 */,
/* 181 */,
/* 182 */,
/* 183 */,
/* 184 */,
/* 185 */,
/* 186 */,
/* 187 */,
/* 188 */,
/* 189 */
/***/ (function(module, exports, __webpack_require__) {

	var __vue_script__, __vue_template__
	var __vue_styles__ = {}
	__vue_script__ = __webpack_require__(190)
	if (Object.keys(__vue_script__).some(function (key) { return key !== "default" && key !== "__esModule" })) {
	  console.warn("[vue-loader] html\\dashboard\\vue\\api.vue: named exports in *.vue files are ignored.")}
	__vue_template__ = __webpack_require__(262)
	module.exports = __vue_script__ || {}
	if (module.exports.__esModule) module.exports = module.exports.default
	var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports
	if (__vue_template__) {
	__vue_options__.template = __vue_template__
	}
	if (!__vue_options__.computed) __vue_options__.computed = {}
	Object.keys(__vue_styles__).forEach(function (key) {
	var module = __vue_styles__[key]
	__vue_options__.computed[key] = function () { return module }
	})
	if (true) {(function () {  module.hot.accept()
	  var hotAPI = __webpack_require__(17)
	  hotAPI.install(__webpack_require__(1), false)
	  if (!hotAPI.compatible) return
	  var id = "_v-27646c6c/api.vue"
	  if (!module.hot.data) {
	    hotAPI.createRecord(id, module.exports)
	  } else {
	    hotAPI.update(id, module.exports, __vue_template__)
	  }
	})()}

/***/ }),
/* 190 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';

	Object.defineProperty(exports, "__esModule", {
	  value: true
	});

	var _api = __webpack_require__(191);

	var _api2 = _interopRequireDefault(_api);

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

	exports.default = _api2.default;
	// </script>
	// <template>
	//     <template v-if="!status.loading">
	//         <!-- module start -->
	//         <div class="api-modules-tab ta-c" v-if="project.editable=='YES'">
	//             <a class="api-module api-module-item" v-bind:class="{'active':editing}" v-on:click="editing=true">编辑模式</a>
	//             <a class="api-module api-module-item" v-bind:class="{'active':!editing}" v-on:click="editing=false">浏览模式</a>
	//         </div>
	//         <div class="api-modules">
	//             <div class="cb api-modules-container">
	//                 <ul>
	//                     <li data-id="{{item.id}}" v-for="item in modules"
	//                         class="api-module fl api-module-item"
	//                         v-bind:class="{'active':currentModule.id == item.id}">
	//                         <span v-on:click="moduleClick(item)">{{item.name}}</span>
	//                         <i class="icon-angeldownblock iconfont" v-on:click.stop="flag.moduleActionId= item.id" v-show="editing"></i>
	//                         <div class="api-item-actions" v-show="flag.moduleActionId == item.id && editing">
	//                             <div v-on:click="moduleEdit(item)"><i class="iconfont icon-bianji"></i> 编辑</div>
	//                             <div v-on:click="moduleDelete(item)"><i class="iconfont icon-move"></i> 删除</div>
	//                         </div>
	//                        <!-- <i class="icon-bianji iconfont" v-on:click="moduleEdit(item)" v-show="editing"></i>
	//                         <i class="icon-close iconfont" v-on:click="moduleDelete(item)" v-show="editing"></i>-->
	//                     </li>
	//                     <li class="api-module fl api-module-plus" v-on:click="moduleNew" v-show="editing">
	//                         <i class="icon-tianjia iconfont"></i></li>
	//                     <li class="fr api-module"><i class="iconfont icon-chick" style="cursor: default"></i></li>
	//                     <li class="fr api-module"><i class="iconfont icon-menu"></i></li>
	//                     <li class="fr api-module api-env" v-show="currentEnv" v-on:click.stop="envClick($event)">{{currentEnv.name}} <i class="iconfont icon-angeldownblock"></i></li>
	//                     <li class="fr api-module">
	//                         <div class="api-module-search">
	//                             <input type="text" class="text" v-on:keyup.enter="search" v-model="flag.searchInput">
	//                             <i class="iconfont icon-search" v-on:click="search"></i>
	//                         </div>
	//                     </li>
	//                 </ul>
	//             </div>
	//         </div>
	//         <div class="api-env-details" id="api-env-details" v-show="status.showEnvs" v-on:mouseleave="status.showEnvs=false">
	//             <ul class="api-env-items">
	//                 <li v-for="item in envs" v-bind:class="{'active':item.t==currentEnv.t}" v-on:click="currentEnv=item" v-on:mouseover="envOver(item,$event)">{{item.name}}</li>
	//                 <li class="line"></li>
	//                 <li v-on:click="createEnv" v-on:mouseover="status.showEnvValues=false" v-if="project.editable=='YES'" class="api-env-create">添加环境</li>
	//             </ul>
	//             <div class="api-env-content" id="api-env-content" v-show="status.showEnvValues">
	//                 <div class="div-table">
	//                     <ul class="div-table-header div-table-line cb">
	//                         <li class="col-sm-4">变量</li>
	//                         <li class="col-sm-8">
	//                             <div class="cb">值
	//                                 <i v-on:click.stop="envRemove" style="padding-right: 5px" class="fr iconfont icon-close"></i>
	//                                 <i v-on:click.stop="envCopy" style="padding-right: 5px" class="fr iconfont icon-copy"></i>
	//                                 <i v-on:click.stop="envEdit" style="padding-right: 5px" class="fr iconfont icon-edit"></i>
	//                             </div>
	//                         </li>
	//                     </ul>
	//                     <ul class="div-table-line cb" v-for="item in flag.tempEnv.vars">
	//                         <li class="col-sm-4">{{item.name}}</li>
	//                         <li class="col-sm-8">{{item.value}}</li>
	//                     </ul>
	//                 </div>
	//             </div>
	//         </div>
	//         <div class="api-menus" id="api-menus">
	//             <div class="api-sanjiaoxings">
	//                 <!--<div class="api-sanxiaoxing"></div>-->
	//                 <i class="iconfont icon-sanjiaoxing"></i>
	//             </div>
	//             <ul class="cb">
	//                 <li v-if="editable">
	//                     <a v-on:click="getShares">
	//                         <p><i class="iconfont icon-relation"></i></p>
	//                         <p>分享</p>
	//                     </a>
	//                 </li>
	//                 <li v-if="editable">
	//                     <a v-link="'/project/'+id+'/members'">
	//                         <p><i class="iconfont icon-user"></i></p>
	//                         <p>成员管理</p>
	//                     </a>
	//                 </li>
	//                 <li v-if="editable">
	//                     <a v-link="'/project/'+id+'/settings'">
	//                         <p><i class="iconfont icon-setting"></i></p>
	//                         <p>项目设置</p>
	//                     </a>
	//                 </li>
	//                 <li>
	//                     <a v-link="'/project/'+id+'/quit'" >
	//                         <p><i class="iconfont icon-quit"></i></p>
	//                         <p>退出项目</p>
	//                     </a>
	//                 </li>
	//                 <li v-if="editable">
	//                     <a v-link="'/project/'+id+'/transfer'">
	//                         <p><i class="iconfont icon-transfer"></i></p>
	//                         <p>项目转让</p>
	//                     </a>
	//                 </li>
	//                 <li v-if="editable">
	//                     <a v-link="'/project/'+id+'/release'">
	//                         <p><i class="iconfont icon-delete"></i></p>
	//                         <p>删除项目</p>
	//                     </a>
	//                 </li>
	//                 <li>
	//                     <a href="http://www.xiaoyaoji.com.cn/help.html" target="_blank">
	//                         <p><i class="iconfont icon-question"></i></p>
	//                         <p>帮助</p>
	//                     </a>
	//                 </li>
	//
	//             </ul>
	//         </div>
	//         <datalist id="headerlist">
	//             <option v-for="item in flag.headers" value="{{item}}">
	//         </datalist>
	//         <datalist id="requestlist">
	//             <option v-for="item in flag.requests" value="{{item}}">
	//         </datalist>
	//         <datalist id="responselist">
	//             <option v-for="item in flag.responses" value="{{item}}">
	//         </datalist>
	//         <!-- module end -->
	//
	//         <div v-show="modules.length>0">
	//         <!-- editing start -->
	//         <div v-show="editing">
	//             <div id="api-edit-box" class="apis">
	//                 <div class="cb api-container">
	//                     <!-- api left start -->
	//                     <div class="fl apis-left">
	//                         <div class="cb api-fn-actions">
	//                             <div class="fl" v-on:click="folderNew"><i class="icon-tianjia iconfont"></i> 添加分类</div>
	//                             <div class="fl" v-on:click="folderNewApi(null,$event)"><i class="icon-tianjia iconfont"></i> 添加接口</div>
	//                         </div>
	//                         <ul class="apis-nav" id="api-edit-nav">
	//                             <li>
	//                                 <div class="api-name api-description cb" v-bind:class="{'active':show=='doc'}"
	//                                      v-on:click="show='doc'">
	//                                     <span>文档说明</span>
	//                                     <span class="fr api-actions">
	//                                         <i class="iconfont icon-list" v-on:click.stop="collapse=!collapse"></i>
	//                                     </span>
	//                                 </div>
	//                             </li>
	//                             <li>
	//                                 <div class="api-name api-description cb" v-bind:class="{'active':show=='module'}"
	//                                      v-on:click="show='module'">
	//                                     <span>模块全局参数</span>
	//                                 </div>
	//                             </li>
	//
	//                             <template v-if="!currentModule.folders">
	//                                 {{currentModule.folders = []}}
	//                             </template>
	//                             <li v-for="item in currentModule.folders">
	//                                 <div class="api-name api-folder cb" v-bind:class="{'open':!collapse}" v-on:click="folderClick">
	//                                     <span>{{item.name}}</span>
	//                                     <div class="fr">
	//                                         <i v-on:click="folderNewApi(item,$event)" class="icon-tianjia iconfont api-new"></i>
	//                                         <i v-on:click.stop="flag.actionId=item.id" class="icon-angeldownblock iconfont"></i>
	//                                     </div>
	//                                 </div>
	//                                 <ul class="apis-nav apis-nav-sub" v-bind:class="{'hide':collapse}">
	//                                     <li v-for="api in item.children">
	//                                         <div class="api-name cb" v-on:click="apiClick(api,item)"
	//                                              v-bind:class="{'active':currentApi.id == api.id}">
	//                                             <span v-bind:class="{'deprecated':api.status=='DEPRECATED'}">{{api.name}}</span>
	//                                             <div class="fr">
	//                                                 <i v-on:click.stop="flag.actionId=api.id" class="icon-angeldownblock iconfont"></i>
	//                                             </div>
	//                                         </div>
	//                                         <div class="api-item-actions" v-show="flag.actionId==api.id">
	//                                             <div v-on:click="listItemCopy('api',api.id,'copy')"><i class="iconfont icon-copy"></i> 复制</div>
	//                                             <div v-on:click="listItemCopy('api',api.id,'move')"><i class="iconfont icon-move"></i> 移动</div>
	//                                             <div v-on:click="apiDelete(api,item.children,$event)"><i class="iconfont icon-move"></i> 删除</div>
	//                                         </div>
	//                                     </li>
	//                                 </ul>
	//                                 <div class="api-item-actions" v-show="flag.actionId==item.id">
	//                                     <div v-on:click="listItemCopy('folder',item.id,'copy')"><i class="iconfont icon-copy"></i> 复制</div>
	//                                     <div v-on:click="listItemCopy('folder',item.id,'move')"><i class="iconfont icon-move"></i> 移动</div>
	//                                     <div v-on:click="folderEdit(item,$event)" ><i class="iconfont icon-bianji"></i> 编辑</div>
	//                                     <div v-on:click="folderDelete(item,$event)"><i class="iconfont icon-move"></i> 删除</div>
	//                                 </div>
	//                             </li>
	//                         </ul>
	//                     </div>
	//                     <!-- api left end -->
	//                     <!-- api content start -->
	//                     <div class="api-content fl">
	//                         <div id="api-edit-description" class="api-doc-desc" v-bind:class="{'hide':show!='doc'}">
	//                             <div id="editorBox"></div>
	//                             <div class="api-btn-save ta-c">
	//                                 <button class="btn btn-orange" v-on:click="updateProject">保存修改</button>
	//                             </div>
	//                         </div>
	//                         <div v-bind:class="{'hide':show!='module'}" class="form">
	//                             <p class="api-details-title">全局请求头</p>
	//                             <div class="div-table editing">
	//                                 <ul class="div-table-header div-table-line cb">
	//                                     <li class="col-sm-1">操作</li>
	//                                     <li class="col-sm-3">参数名称</li>
	//                                     <li class="col-sm-2">是否必须</li>
	//                                     <li class="col-sm-4">描述</li>
	//                                     <li class="col-sm-2">默认值</li>
	//                                 </ul>
	//                                 <request-headers-vue
	//                                         v-bind:request-headers.sync="currentModule.requestHeaders"
	//                                         v-bind:editing="editing"></request-headers-vue>
	//                             </div>
	//                             <div class="item">
	//                                 <button class="btn btn-default btn-sm" v-on:click="currentModule.requestHeaders.push({children:[],require:'true'})">
	//                                     <i class="iconfont icon-tianjia"></i>添加参数
	//                                 </button>
	//                                 <button class="btn btn-default btn-sm" v-on:click="import2GHeaders">
	//                                     <i class="iconfont icon-importexport"></i>导入json
	//                                 </button>
	//                             </div>
	//
	//                             <p class="api-details-title">全局请求头</p>
	//                             <div class="div-table editing">
	//                                 <ul class="div-table-header div-table-line cb">
	//                                     <li class="col-sm-1">操作</li>
	//                                     <li class="col-sm-3">参数名称</li>
	//                                     <li class="col-sm-2">是否必须</li>
	//                                     <li class="col-sm-2">类型</li>
	//                                     <li class="col-sm-2">描述</li>
	//                                     <li class="col-sm-2">默认值</li>
	//                                 </ul>
	//                                 <request-args-vue v-bind:request-args="currentModule.requestArgs"
	//                                                   v-bind:editing="editing"></request-args-vue>
	//                             </div>
	//                             <div class="item">
	//                                 <button class="btn btn-default btn-sm" v-on:click="currentModule.requestArgs.push({type:'string',children:[],require:'true'})">
	//                                     <i class="iconfont icon-tianjia"></i>添加参数
	//                                 </button>
	//                                 <button class="btn btn-default btn-sm" v-on:click="import2GRequestArgs">
	//                                     <i class="iconfont icon-importexport"></i>导入json
	//                                 </button>
	//                             </div>
	//
	//                             <div class="api-btn-save ta-c">
	//                                 <button class="btn btn-orange" v-on:click="moduleUpdateCommonParams">保存修改</button>
	//                             </div>
	//                         </div>
	//                         <div id="api-edit-details" v-bind:class="{'hide':show!='api'}">
	//                             <div id="api-edit-content" class="form">
	//                                 <p class="api-details-title">基本信息</p>
	//                                 <div class="item api-chose-list">
	//                                     <div>
	//                                         <span>分类</span>
	//                                         <div class="div-select">
	//                                             <select v-model="currentApi.folderId">
	//                                                 <option value="{{item.id}}" v-for="item in currentModule.folders">{{item.name}}</option>
	//                                             </select>
	//                                         </div>
	//                                     </div>
	//                                     <div>
	//                                         <span>协议</span>
	//                                         <div class="div-select">
	//                                             <select v-model="currentApi.protocol">
	//                                                 <option value="HTTP">HTTP</option>
	//                                                 <option value="WEBSOCKET">WEBSOCKET</option>
	//                                             </select>
	//                                         </div>
	//                                     </div>
	//                                     <template v-if="currentApi.protocol=='HTTP'">
	//                                        <div>
	//                                            <span>请求方法</span>
	//                                            <div class="div-select">
	//                                                <select v-model="currentApi.requestMethod">
	//                                                     <option value="GET">GET</option>
	//                                                     <option value="POST">POST</option>
	//                                                     <option value="PUT">PUT</option>
	//                                                     <option value="DELETE">DELETE</option>
	//                                                     <option value="PATCH">PATCH</option>
	//                                                     <option value="COPY">COPY</option>
	//                                                     <option value="OPTIONS">OPTIONS</option>
	//                                                 </select>
	//                                            </div>
	//                                        </div>
	//                                         <div>
	//                                             <span>请求数据类型</span>
	//                                             <div class="div-select">
	//                                                 <select v-model="currentApi.dataType">
	//                                                     <option value="X-WWW-FORM-URLENCODED">X-WWW-FORM-URLENCODED</option>
	//                                                     <template v-if="currentApi.requestMethod == 'POST'">
	//                                                         <option value="FORM-DATA">FORM-DATA</option>
	//                                                         <option value="JSON">JSON</option>
	//                                                         <option value="RAW">RAW</option>
	//                                                         <option value="BINARY">BINARY</option>
	//                                                         <option value="XML">XML</option>
	//                                                     </template>
	//                                                 </select>
	//                                             </div>
	//                                         </div>
	//                                         <div>
	//                                             <span>响应类型</span>
	//                                             <div class="div-select">
	//                                                 <select v-model="currentApi.contentType">
	//                                                     <option value="JSON">JSON</option>
	//                                                     <option value="JSONP">JSONP</option>
	//                                                     <option value="TEXT">TEXT</option>
	//                                                     <option value="XML">XML</option>
	//                                                     <option value="HTML">HTML</option>
	//                                                     <option value="IMAGE">IMAGE</option>
	//                                                     <option value="BINARY">BINARY</option>
	//                                                 </select>
	//                                             </div>
	//                                         </div>
	//                                         <div>
	//                                             <span>状态</span>
	//                                             <div class="div-select">
	//                                                 <select v-model="currentApi.status">
	//                                                     <option value="ENABLE">启用</option>
	//                                                     <option value="DEPRECATED">已废弃</option>
	//                                                 </select>
	//                                             </div>
	//                                         </div>
	//
	//                                     </template>
	//                                 </div>
	//                                 <div class="item">
	//                                     <div class="col-sm-1 label">接口名称</div>
	//                                     <div class="col-sm-11">
	//                                         <input type="text" class="text" maxlength="30" placeholder="请输入接口名称"
	//                                                v-model="currentApi.name" value="{{currentApi.name}}">
	//                                     </div>
	//                                 </div>
	//                                 <div class="item">
	//                                     <div class="col-sm-1 label">请求地址</div>
	//                                     <div class="col-sm-11">
	//                                         <input type="text" placeholder="如:/api/test" v-model="currentApi.url" class="text"
	//                                                value="{{currentApi.url}}">
	//                                         <template v-if="currentEnv.vars && currentEnv.vars.length>0">
	//                                             <p class="hint">实际请求地址:{{requestURL}}</p>
	//                                             <p class="api-env-vars">
	//                                                 变量：<span v-on:click="apiVarsClick(item.name,$event)" v-for="item in currentEnv.vars">{{item.name}}</span>
	//                                             </p>
	//                                         </template>
	//                                     </div>
	//                                 </div>
	//                                 <div class="item">
	//                                     <div class="col-sm-1 label">接口描述</div>
	//                                     <div class="col-sm-11">
	//                                     <textarea class="text"
	//                                               v-model="currentApi.description">{{currentApi.description}}</textarea>
	//                                     </div>
	//                                 </div>
	//                                 <template v-if="currentApi.protocol == 'HTTP'">
	//                                     <p class="api-details-title">发送数据</p>
	//                                 <div class="tabs">
	//                                     <a class="tab" v-on:click="flag.tab='header'" v-bind:class="{'active':(flag.tab=='header') ||  (currentApi.dataType=='BINARY')}">请求头(Header)</a>
	//                                     <a class="tab" v-on:click="flag.tab='body'" v-bind:class="{'active':flag.tab=='body'}"  v-if="currentApi.dataType!='BINARY'">请求参数(Body)</a>
	//                                 </div>
	//                                 <!-- 请求头参数 -->
	//                                 <div class="tab-content" v-bind:class="{'active':(flag.tab=='header') ||  (currentApi.dataType=='BINARY') }">
	//                                     <div class="div-table editing">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-1">操作</li>
	//                                             <li class="col-sm-3">参数名称</li>
	//                                             <li class="col-sm-2">是否必须</li>
	//                                             <li class="col-sm-4">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-headers-vue
	//                                                 v-bind:request-headers.sync="currentApi.requestHeaders"
	//                                                 v-bind:editing="editing"></request-headers-vue>
	//                                     </div>
	//                                     <div class="item">
	//                                         <button class="btn btn-default btn-sm" v-on:click="insertNewRequestHeadersRow">
	//                                             <i class="iconfont icon-tianjia"></i>添加参数
	//                                         </button>
	//                                         <button class="btn btn-default btn-sm" v-on:click="import2RequestHeaders">
	//                                             <i class="iconfont icon-importexport"></i>导入json
	//                                         </button>
	//                                     </div>
	//                                 </div>
	//
	//
	//
	//                                 <!-- 请求参数 -->
	//                                 <div class="tab-content" v-bind:class="{'active':flag.tab=='body'}" v-if="currentApi.dataType!='BINARY'">
	//                                     <div class="div-table editing">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-1">操作</li>
	//                                             <li class="col-sm-3">参数名称</li>
	//                                             <li class="col-sm-2">是否必须</li>
	//                                             <li class="col-sm-2">类型</li>
	//                                             <li class="col-sm-2">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-args-vue v-bind:request-args="currentApi.requestArgs"
	//                                                           v-bind:editing="editing"></request-args-vue>
	//                                     </div>
	//                                     <div class="item">
	//                                         <button class="btn btn-default btn-sm" v-on:click="insertNewRequestArgsRow">
	//                                             <i class="iconfont icon-tianjia"></i>添加参数
	//                                         </button>
	//                                         <button class="btn btn-default btn-sm" v-on:click="import2RequestArgs">
	//                                             <i class="iconfont icon-importexport"></i>导入json
	//                                         </button>
	//                                     </div>
	//                                 </div>
	//
	//                                 <!-- 响应参数 -->
	//                                 <p class="api-details-title">响应数据</p>
	//                                 <div>
	//                                     <div class="div-table editing">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-1">操作</li>
	//                                             <li class="col-sm-3">参数名称</li>
	//                                             <li class="col-sm-2">是否必须</li>
	//                                             <li class="col-sm-2">类型</li>
	//                                             <li class="col-sm-4">描述</li>
	//                                         </ul>
	//                                         <response-args-vue v-bind:response-args="currentApi.responseArgs"
	//                                                            v-bind:editing="editing"></response-args-vue>
	//                                     </div>
	//                                     <div class="item">
	//                                         <button class="btn btn-default btn-sm" v-on:click="insertNewResponseArgsRow">
	//                                             <i class="iconfont icon-tianjia"></i>添加参数
	//                                         </button>
	//                                         <button class="btn btn-default btn-sm" v-on:click="import2ResponseArgs">
	//                                             <i class="iconfont icon-importexport"></i>导入json
	//                                         </button>
	//                                     </div>
	//                                 </div>
	//
	//                                 <p class="api-details-title">示例数据</p>
	//                                 <textarea class="api-example api-field" v-model="currentApi.example"
	//                                       placeholder="请添加一些示例数据">{{currentApi.example}}</textarea>
	//                                 </template>
	//                             </div>
	//                             <div class="api-btn-save ta-c">
	//                                 <button class="btn btn-orange" v-on:click="apiSave">保存修改</button>
	//                             </div>
	//                         </div>
	//                     </div>
	//                     <!-- api content end -->
	//                 </div>
	//             </div>
	//
	//
	//         </div>
	//         <!-- editing end -->
	//
	//         <!-- view start -->
	//         <div v-show="!editing">
	//             <template v-if="!error.projectNotExists">
	//                 <div class="apis">
	//                     <div v-if="currentModule.folders && currentModule.folders.length>0" class="cb api-container">
	//                         <div class="fl apis-left">
	//                             <ul class="apis-nav api-folder-list">
	//                                 <li>
	//                                     <div class="api-name api-description" v-bind:class="{'active':show=='doc'}"
	//                                          v-on:click="show='doc'">
	//                                         <span>文档说明</span>
	//                                         <span class="fr api-actions">
	//                                         <i class="iconfont icon-list" v-on:click.stop="collapse=!collapse"></i>
	//                                     </span>
	//                                     </div>
	//                                 </li>
	//                                 <template v-if="!currentModule.folders">
	//                                     {{currentModule.folders = []}}
	//                                 </template>
	//                                 <li v-for="item in currentModule.folders" class="cb">
	//                                     <!--<span class="fr handle">::</span>-->
	//                                     <div class="api-name api-folder" v-bind:class="{'open':!collapse}" v-on:click="folderClick">
	//                                         <span>{{item.name}}</span>
	//                                     </div>
	//                                     <ul class="apis-nav apis-nav-sub" v-bind:class="{'hide':collapse}">
	//                                         <li v-for="api in item.children" v-on:click="show='api'">
	//                                             <div class="api-name" v-bind:class="{'active':currentApi.id == api.id}"
	//                                                  v-on:click="apiClick(api,item)">
	//                                                 <span v-bind:class="{'deprecated':api.status=='DEPRECATED'}">{{api.name}}</span>
	//                                             </div>
	//                                         </li>
	//                                     </ul>
	//                                 </li>
	//                             </ul>
	//                         </div>
	//                         <div class="api-content fl">
	//                             <span class="api-update-time">更新时间: <span id="api-update-time">{{currentModule.lastUpdateTime}}</span></span>
	//                             <div id="api-doc-desc" class="api-doc-desc" v-show="show=='doc'">
	//                                 <div id="view-box" v-show="project.details"></div>
	//                                 <div v-show="!project.details" class="ta-c api-error-tip">
	//                                     <i class="iconfont icon-info"></i>
	//                                     <p>项目还未书写文档说明。</p>
	//                                 </div>
	//                             </div>
	//                             <div id="api-details" class="api-details" v-show="show=='api'">
	//                                 <p class="api-details-title">基本信息</p>
	//                                 <div class="api-base-info api-edit-box">
	//                                     <p v-if="currentApi.protocol">请求类型: {{currentApi.protocol}}</p>
	//                                     <p v-if="currentApi.url">接口地址: {{requestURL}}</p>
	//                                     <template v-if="currentApi.protocol=='HTTP'">
	//                                         <p v-if="currentApi.requestMethod">请求方式: {{currentApi.requestMethod}}</p>
	//                                         <p v-if="currentApi.dataType">数据类型: {{currentApi.dataType}}</p>
	//                                         <p v-if="currentApi.contentType">响应类型: {{currentApi.contentType}}</p>
	//                                     </template>
	//                                     <p v-if="currentApi.status">接口状态: {{currentApi.status=='DEPRECATED'?'已废弃':'启用'}}</p>
	//                                 </div>
	//                                 <template v-if="currentApi.description">
	//                                     <p class="api-details-title">接口描述</p>
	//                                     <pre>{{currentApi.description}}</pre>
	//                                 </template>
	//                                 <template v-if="(currentModule.requestHeaders&&currentModule.requestHeaders.length>0)">
	//                                     <p class="api-details-title">全局请求头</p>
	//                                     <div class="div-table">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-2">参数名称</li>
	//                                             <li class="col-sm-1">是否必须</li>
	//                                             <li class="col-sm-7">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-headers-vue
	//                                                 v-bind:request-headers.sync="currentModule.requestHeaders"
	//                                                 v-bind:editing="editing"></request-headers-vue>
	//                                     </div>
	//                                 </template>
	//
	//                                 <template v-if="(currentApi.requestHeaders  && currentApi.requestHeaders.length>0)">
	//                                     <p class="api-details-title">请求头</p>
	//                                     <div class="div-table">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-2">参数名称</li>
	//                                             <li class="col-sm-1">是否必须</li>
	//                                             <li class="col-sm-7">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-headers-vue
	//                                                 v-bind:request-headers.sync="currentApi.requestHeaders"
	//                                                 v-bind:editing="editing"></request-headers-vue>
	//                                     </div>
	//                                 </template>
	//
	//                                 <template v-if="(currentModule.requestArgs && currentModule.requestArgs.length>0)">
	//                                     <p class="api-details-title">全局请求参数</p>
	//                                     <div class="div-table">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-2">参数名称</li>
	//                                             <li class="col-sm-1">是否必须</li>
	//                                             <li class="col-sm-1">类型</li>
	//                                             <li class="col-sm-6">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-args-vue
	//                                                 v-bind:request-args.sync="currentModule.requestArgs"
	//                                                 v-bind:editing="editing"></request-args-vue>
	//                                     </div>
	//                                 </template>
	//
	//                                 <template v-if=" (currentApi.requestArgs  && currentApi.requestArgs.length>0)">
	//                                     <p class="api-details-title">请求参数</p>
	//                                     <div class="div-table">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-2">参数名称</li>
	//                                             <li class="col-sm-1">是否必须</li>
	//                                             <li class="col-sm-1">类型</li>
	//                                             <li class="col-sm-6">描述</li>
	//                                             <li class="col-sm-2">默认值</li>
	//                                         </ul>
	//                                         <request-args-vue
	//                                                 v-bind:request-args.sync="currentApi.requestArgs"
	//                                                 v-bind:editing="editing"></request-args-vue>
	//                                     </div>
	//                                 </template>
	//                                 <template v-if="currentApi.responseArgs && currentApi.responseArgs.length>0">
	//                                     <p class="api-details-title">响应数据</p>
	//                                     <div class="div-table">
	//                                         <ul class="div-table-header div-table-line cb">
	//                                             <li class="col-sm-2">参数名称</li>
	//                                             <li class="col-sm-1">是否必须</li>
	//                                             <li class="col-sm-2">数据类型</li>
	//                                             <li class="col-sm-7">描述</li>
	//                                         </ul>
	//                                         <response-args-vue
	//                                                 v-bind:response-args.sync="currentApi.responseArgs"
	//                                                 v-bind:editing="editing"></response-args-vue>
	//                                     </div>
	//                                 </template>
	//
	//                                 <template v-if="currentApi.example">
	//                                     <p class="api-details-title">例子</p>
	//                                     <div class="api-details-desc api-edit-box">
	//                                         <pre class="content">{{currentApi.example}}</pre>
	//                                     </div>
	//                                 </template>
	//                                 <p class="api-details-title">演示</p>
	//                                 <template v-if="!currentApi.protocol || currentApi.protocol == 'HTTP'">
	//                                     <div class="form">
	//                                         <div class="item">
	//                                             <div class="col-sm-2 label second">请求地址</div>
	//                                             <div class="col-sm-8">
	//                                                 <input type="hidden" value="{{requestURL}}">
	//                                                 <input type="text" class="text" id="requestURL">
	//                                             </div>
	//                                             <div class="col-sm-2" style="text-align: right">
	//                                                 <div class="xyj-dropdown">
	//                                                     <span class="api-view-env xyj-dropdown-toggle">{{currentEnv.name}}  <i class="iconfont icon-angeldownblock"></i></span>
	//                                                     <ul class="xyj-dropdown-list api-view-env-items">
	//                                                         <li v-for="item in envs" v-bind:class="{'active':item.t==currentEnv.t}"
	//                                                             v-on:click="currentEnv=item"
	//                                                             v-on:mouseover="envOver(item,$event)">{{item.name}}</li>
	//                                                     </ul>
	//                                                 </div>
	//                                             </div>
	//                                         </div>
	//                                     </div>
	//                                     <template v-if="(currentModule.requestHeaders && currentModule.requestHeaders.length>0) || (currentApi.requestHeaders && currentApi.requestHeaders.length>0)">
	//                                         <form class="api-test form" id="header-form">
	//                                             <p class="api-details-title second">请求头</p>
	//                                             <div class="item" v-for="item in currentModule.requestHeaders">
	//                                                 <div class="col-sm-2 label">{{item.name}}</div>
	//                                                 <div class="col-sm-8">
	//                                                     <input type="text" name="{{item.name}}"
	//                                                            value="{{item.testValue || item.defaultValue}}"
	//                                                            placeholder="{{item.description}}" class="text">
	//                                                 </div>
	//                                             </div>
	//                                             <div class="item" v-for="item in currentApi.requestHeaders">
	//                                                 <div class="col-sm-2 label">{{item.name}}</div>
	//                                                 <div class="col-sm-8">
	//                                                     <input type="text" name="{{item.name}}"
	//                                                            value="{{item.testValue || item.defaultValue}}"
	//                                                            placeholder="{{item.description}}" class="text">
	//                                                 </div>
	//                                             </div>
	//                                         </form>
	//                                     </template>
	//
	//                                     <div class="form">
	//
	//                                     <template v-if="currentApi.urlArgs && currentApi.urlArgs.length>0">
	//                                         <p class="api-details-title second">地址参数</p>
	//                                         <div class="item" v-for="item in currentApi.urlArgs">
	//                                             <div class="col-sm-2 label">{{item.name}}</div>
	//                                             <div class="col-sm-8">
	//                                                 <input data-type="text" v-model="item.value" type="text"
	//                                                        name="{{item}}" placeholder="替换URL上的参数"
	//                                                        class="text">
	//                                             </div>
	//                                         </div>
	//                                     </template>
	//                                     </div>
	//                                     <form class="form" id="args-form" v-on:submit.prevent>
	//                                         <template v-if="(currentModule.requestArgs && currentModule.requestArgs.length>0) || (currentApi.requestArgs && currentApi.requestArgs.length>0)">
	//                                             <div class="cb">
	//                                                 <div>
	//                                                     <template v-if="currentApi.dataType=='XML' || currentApi.dataType =='JSON'">
	//                                                         <div class="item">
	//                                                             <div class="col-sm-2 label">Body</div>
	//                                                             <div class="col-sm-8">
	//                                                                 <pre id="ace-editor-box"></pre>
	//                                                             </div>
	//                                                         </div>
	//                                                     </template>
	//                                                     <template v-else>
	//                                                         <p class="api-details-title second">请求参数</p>
	//                                                         <div class="item"  v-for="item in currentModule.requestArgs">
	//                                                             <div class="col-sm-2 label">{{item.name}}</div>
	//                                                             <div class="col-sm-8" v-bind:class="{'full-text':item.type=='file'}">
	//                                                                 <input data-type="{{item.type}}"
	//                                                                        type="{{item.type=='file'?'file':'text'}}"
	//                                                                        name="{{item.name}}"
	//                                                                        class="api-request-args-item"
	//                                                                        value="{{item.testValue || item.defaultValue}}"
	//                                                                        placeholder="{{item.description}}"
	//                                                                        v-bind:class="{'text':item.type!='file'}">
	//                                                             </div>
	//                                                         </div>
	//                                                         <div class="item"  v-for="item in currentApi.requestArgs">
	//                                                             <div class="col-sm-2 label">{{item.name}}</div>
	//                                                             <div class="col-sm-8" v-bind:class="{'full-text':item.type=='file'}">
	//                                                                 <input data-type="{{item.type}}"
	//                                                                        type="{{item.type=='file'?'file':'text'}}"
	//                                                                        name="{{item.name}}"
	//                                                                        class="api-request-args-item"
	//                                                                        value="{{item.testValue || item.defaultValue}}"
	//                                                                        placeholder="{{item.description}}"
	//                                                                        v-bind:class="{'text':item.type!='file'}">
	//                                                             </div>
	//                                                         </div>
	//                                                     </template>
	//                                                 </div>
	//                                             </div>
	//                                         </template>
	//
	//                                         <template v-if="currentApi.dataType=='RAW'">
	//                                             <p class="api-details-title second">请求数据</p>
	//                                             <div class="item">
	//                                                 <div class="col-sm-2 label">body</div>
	//                                                 <div class="col-sm-8">
	//                                                     <textarea class="text" id="rawBody"></textarea>
	//                                                 </div>
	//                                             </div>
	//                                         </template>
	//                                         <template v-if="currentApi.dataType=='BINARY'">
	//                                             <p class="api-details-title second">请求数据</p>
	//                                             <div class="item">
	//                                                 <div class="col-sm-2 label">BINARY</div>
	//                                                 <div class="col-sm-8">
	//                                                     <input type="file" class="full-text" id="binaryBody">
	//                                                 </div>
	//                                             </div>
	//                                         </template>
	//
	//
	//
	//                                         <div class="form">
	//                                             <div class="item">
	//                                                 <div class="col-sm-2 label"></div>
	//                                                 <div class="col-sm-8">
	//                                                     <input type="button" id="api-submit" v-on:click.stop="apiSubmit"
	//                                                            class="btn btn-primary" value="{{status.apiLoading?'加载中':'发送'}}">
	//                                                     <input type="button" v-on:click.stop="apiMock" v-show="currentApi.responseArgs && currentApi.responseArgs.length>0"
	//                                                            class="btn btn-orange" value="mock">
	//
	//                                                 </div>
	//                                             </div>
	//                                         </div>
	//                                     </form>
	//                                     <!--<p class="api-details-title">结果数据</p>-->
	//                                     <div class="api-result-tabs cb" v-show="currentApi.result">
	//                                         <a class="tab fl active" v-on:click="flag.resultActive='content'" v-bind:class="{'active':(flag.resultActive=='content')}">Body</a>
	//                                         <a class="tab fl" v-on:click="flag.resultActive='headers'" v-bind:class="{'active':(flag.resultActive=='headers')}">Headers</a>
	//                                         <a class="tab fr">Time: {{currentApi.resultRunTime}} ms</a>
	//                                         <a class="tab fr">StatusCode: {{currentApi.resultStatusCode}}</a>
	//                                     </div>
	//                                     <div v-show="currentApi.result" class="api-result-box">
	//                                         <i v-show="!!currentApi.result && (flag.resultActive=='content')" id="api-result-copy" class="iconfont icon-copy"></i>
	//                                         <i v-show="!!currentApi.result && currentApi.contentType=='HTML' && (flag.resultActive=='content')" class="iconfont icon-openwindow" v-on:click="openNewWindow"></i>
	//                                         <i v-show="!!currentApi.result && (flag.resultActive=='headers')" id="api-result-header-copy" class="iconfont icon-copy"></i>
	//                                         <div id="api-result">
	//                                             <pre v-show="flag.resultActive=='content'" id="api-result-content">{{{currentApi.result}}}</pre>
	//                                             <div v-show="flag.resultActive=='headers'" id="api-result-headers">
	//                                                 <div class="api-result-headers-list" v-show="currentApi.resultHeaders">
	//                                                     {{{currentApi.resultHeaders | html}}}
	//                                                 </div>
	//                                                 <div v-else class="api-result-headers-list">
	//                                                     <div v-if="extVer>=1.4">
	//                                                         No header for you
	//                                                     </div>
	//                                                     <div v-else>
	//                                                         请下载或升级浏览器插件。
	//                                                     </div>
	//                                                 </div>
	//                                             </div>
	//                                         </div>
	//                                     </div>
	//                                     <div class="ta-c api-plugin-tip" v-if="!extVer">
	//                                         <i class="iconfont icon-chrome"></i><br/>
	//                                         <p>由于浏览器有跨域限制，如果您的服务器不支持CORS协议，需要安装我们开发的Chrome插件“小幺鸡”</p>
	//                                         <p>安装的时候请注意勾选，安装后请刷新页面。</p>
	//                                         <p>
	//                                             <a href="https://chrome.google.com/webstore/detail/%E5%B0%8F%E5%B9%BA%E9%B8%A1/omohfhadnbkakganodaofplinheljnbd" target="_blank" class="btn btn-default">Chrome应用商店</a>
	//                                             <a href="/extension/xiaoyaoji.crx" target="_blank" class="btn btn-default">本地下载</a>
	//                                             <a href="http://jingyan.baidu.com/article/e5c39bf56286ae39d6603374.html" target="_blank" class="btn btn-default">本地下载安装教程</a>
	//                                         </p>
	//                                     </div>
	//                                     <div v-else>
	//                                         <div class="ta-c api-plugin-tip" v-if="extVer < 1.3">
	//                                             <i class="iconfont icon-chrome"></i><br/>
	//                                             <p>您安装的『小幺鸡』插件版本有更新,为了避免使用出现bug,请下载升级</p>
	//                                             <p>安装的时候请注意勾选，安装后请刷新页面。</p>
	//                                             <p>
	//                                                 <a href="https://chrome.google.com/webstore/detail/%E5%B0%8F%E5%B9%BA%E9%B8%A1/omohfhadnbkakganodaofplinheljnbd" target="_blank" class="btn btn-default">Chrome应用商店</a>
	//                                                 <a href="/extension/xiaoyaoji.crx" target="_blank" class="btn btn-default">本地下载</a>
	//                                                 <a href="http://jingyan.baidu.com/article/e5c39bf56286ae39d6603374.html" target="_blank" class="btn btn-default">本地下载安装教程</a>
	//                                             </p>
	//                                         </div>
	//                                     </div>
	//                                 </template>
	//                                 <template v-if="currentApi.protocol == 'WEBSOCKET'">
	//                                     <div class="form">
	//                                         <div class="item">
	//                                             <div class="col-sm-2 label">日志</div>
	//                                             <div class="col-sm-10"><textarea class="text" v-model="ws.log"
	//                                                                              rows="10"></textarea></div>
	//                                         </div>
	//                                         <div class="item">
	//                                             <div class="col-sm-2 label">地址</div>
	//                                             <div class="col-sm-10">
	//                                                 <input type="text" class="text" id="websocketRequestURL"
	//                                                                           value="{{requestURL}}"
	//                                                                           v-model="ws.url"></div>
	//                                         </div>
	//
	//                                         <div class="item" v-if="ws.connected">
	//                                             <div class="col-sm-2 label">发送消息</div>
	//                                             <div class="col-sm-10"><input type="text" class="text" v-model="ws.message">
	//                                             </div>
	//                                         </div>
	//
	//                                         <div class="item">
	//                                             <div class="col-sm-2">&nbsp;</div>
	//                                             <div class="col-sm-10">
	//                                                 <input type="button" v-if="!ws.connected" v-on:click="wsConnect"
	//                                                        class="btn btn-primary" value="连接">
	//                                                 <template v-else>
	//                                                     <input type="button" class="btn btn-primary"
	//                                                            v-on:click="wsSendMessage" value="发送消息">
	//                                                     <input type="button" class="btn btn-danger"
	//                                                            v-on:click="wsDisconnect" value="断开连接">
	//                                                 </template>
	//                                             </div>
	//                                         </div>
	//                                     </div>
	//                                 </template>
	//                             </div>
	//                         </div>
	//                     </div>
	//                     <div class="ta-c api-error-tip" v-cloak v-else>
	//                         <i class="iconfont icon-api" style="font-size: 120px"></i>
	//                         <p style="font-size: 24px">该模块下接口列表为空</p>
	//                         <p style="font-size: 12px">编辑模式可管理接口</p>
	//                     </div>
	//                 </div>
	//
	//             </template>
	//             <template v-if="error.projectNotExists">
	//                 <div class="ta-c api-error-tip">
	//                     <i class="iconfont icon-cloud"></i>
	//                     <p style="font-size: 24px">项目不可见或不存在</p>
	//                 </div>
	//             </template>
	//         </div>
	//         <!-- view end -->
	//
	//         <!-- environment start -->
	//         <div class="modal env-modal" v-cloak v-if="status.envModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.envModal=false"></i>
	//             </div>
	//             <div class="modal-content">
	//                 <div class="modal-layout1 form" style="width: 500px">
	//                     <p class="title" style="margin-bottom: 20px">添加新环境</p>
	//                     <div class="hint">
	//                         环境变量运行在URL中,你可以配置多个(线上、灰度、开发)环境变量。在URL中使用方式{{flag.varname}},例：<br/>
	//                         线上环境：prefix => http://www.xiaoyaoji.com.cn<br/>
	//                         则<br/>
	//                         请求URL：{{flag.prefix}}/say => http://www.xiaoyaoji.com.cn/say
	//                     </div>
	//                     <p class="title"></p>
	//                     <div class="item">
	//                         <div class="col-sm-12">
	//                             <input type="text" class="text" v-model="flag.tempEnv.name" placeholder="请输入环境名称">
	//                         </div>
	//                     </div>
	//                     <div class="item" v-for="(index,item) in flag.tempEnv.vars">
	//                         <div class="col-sm-5"><input type="text" v-model=item.name class="text" v-on:focus="envNewLine(index)" placeholder="变量名称" value="{{item.name}}"></div>
	//                         <div class="col-sm-6">
	//                             <input type="text" class="text" v-model="item.value" placeholder="变量值" value="{{item.value}}">
	//                         </div>
	//                         <div class="col-sm-1 full-text">
	//                             <i class="iconfont icon-close" v-on:click="flag.tempEnv.vars.$remove(item)"></i>
	//                         </div>
	//                     </div>
	//
	//                     <div class="ta-c actions">
	//                         <button class="btn btn-default-box middle" tabindex="3"
	//                                 v-on:click="status.envModal=false">
	//                             取消
	//                         </button>
	//                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	//                         <button class="btn btn-primary middle" v-on:click="envSave" tabindex="2">确定</button>
	//                     </div>
	//                 </div>
	//             </div>
	//         </div>
	//         <!-- environment end -->
	//         </div>
	//         <div v-else>
	//             <div class="ta-c api-error-tip">
	//                 <i class="iconfont icon-cloud"></i>
	//                 <p style="font-size: 24px">模块列表为空,请先创建模块</p>
	//             </div>
	//         </div>
	//
	//         <!-- modal list start -->
	//         <div class="modal" v-cloak v-if="status.folderModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.folderModal=false"></i>
	//             </div>
	//             <div class="modal-content">
	//                 <div class="modal-layout1 form">
	//                     <validator name="ff">
	//                         <p class="title">{{!folderName?'创建':'编辑'}}分类</p>
	//                         <input type="text" class="k1 text" id="folderName" value="{{folderName}}" maxlength="20"
	//                                initial="off"
	//                                v-model="folderName"
	//                                v-validate:folder-name="{maxlength:20}"
	//                                v-bind:autofocus="status.folderModal"
	//                                tabindex="1" placeholder="请输入文件夹名称">
	//                         <div class="tip" v-if="$ff.folderName.invalid">{{$ff.errors[0].message}}</div>
	//                     </validator>
	//                     <div class="ta-c actions">
	//                         <button class="btn btn-default-box middle" tabindex="3"
	//                                 v-on:click="status.folderModal=false">取消
	//                         </button>
	//                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	//                         <button class="btn btn-primary middle" v-on:click="folderSave" tabindex="2">确定</button>
	//                     </div>
	//                 </div>
	//             </div>
	//         </div>
	//         <div class="modal" v-cloak v-if="status.moduleModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.moduleModal=false"></i>
	//             </div>
	//             <div class="modal-content">
	//                 <div class="modal-layout1 form">
	//                     <validator name="mf">
	//                         <p class="title">{{!moduleName?'创建':'编辑'}}模块</p>
	//                         <input type="text" maxlength="20" id="moduleName" class="k1 text" v-model="moduleName"
	//                                value="{{moduleName}}"
	//                                initial="off"
	//                                v-validate:module-name="{maxlength:20}"
	//                                v-bind:autofocus="status.folderModal"
	//                                tabindex="1" placeholder="请输入模块名称">
	//                         <div class="tip" v-if="$mf.moduleName.invalid">{{$mf.errors[0].message}}</div>
	//                         <div class="ta-c actions">
	//                             <button class="btn btn-default-box middle" tabindex="3"
	//                                     v-on:click="status.moduleModal=false">
	//                                 取消
	//                             </button>
	//                             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	//                             <button class="btn btn-primary middle" v-on:click="moduleSave" tabindex="2">确定</button>
	//                         </div>
	//                     </validator>
	//                 </div>
	//             </div>
	//         </div>
	//         <div class="modal" v-cloak v-if="status.importModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.importModal=false"></i>
	//             </div>
	//             <div class="modal-content">
	//                 <div class="modal-layout1 form" style="width: 500px">
	//                     <validator name="if">
	//                         <p class="title">导入JSON</p>
	//                         <textarea rows="15" class="k1 text" v-model="importValue" initial="off"
	//                                   v-bind:autofocus="status.importModal"
	//                                   tabindex="1" placeholder="请粘贴导入的数据"></textarea>
	//                         <div class="ta-c actions">
	//                             <button class="btn btn-default-box middle" tabindex="3"
	//                                     v-on:click="status.importModal=false">
	//                                 取消
	//                             </button>
	//                             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	//                             <button class="btn btn-primary middle" v-on:click="importOk" tabindex="2">确定</button>
	//                         </div>
	//                     </validator>
	//                 </div>
	//             </div>
	//         </div>
	//         <div class="modal" v-cloak v-if="status.moveCopyModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.moveCopyModal=false"></i>
	//             </div>
	//             <div class="modal-content">
	//                 <div class="modal-layout1 form" style="width: 500px">
	//                     <p class="title">{{flag.move?'移动':'复制'}}{{flag.moveCopyName}}</p>
	//                     <div class="item">
	//                         <div class="label col-sm-2">选择模块</div>
	//                         <div class="col-sm-10 full-text">
	//                             <select class="text" v-model="flag.moveCopySelectModuleId">
	//                                 <option v-for="item in modules" v-bind:value="item.id">{{item.name}}</option>
	//                             </select>
	//                         </div>
	//                     </div>
	//                     <div class="item" v-for="m in modules" v-if="flag.moveCopySelectModuleId==m.id && flag.moveCopyName=='接口'">
	//                         <div class="label col-sm-2">选择分类</div>
	//                         <div class="col-sm-10 full-text">
	//                             <select class="text" v-model="flag.moveCopySelectFolderId">
	//                                 <option v-for="item in m.folders" v-bind:value="item.id">{{item.name}}</option>
	//                             </select>
	//                         </div>
	//                     </div>
	//
	//                     <div class="ta-c actions">
	//                         <button class="btn btn-default-box middle" tabindex="3"
	//                                 v-on:click="status.moveCopyModal=false">
	//                             取消
	//                         </button>
	//                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	//                         <button class="btn btn-primary middle" v-on:click="copyMoveOk" tabindex="2">确定</button>
	//                     </div>
	//                 </div>
	//             </div>
	//         </div>
	//         <div class="modal" v-cloak v-if="status.shareModal">
	//             <div class="modal-header">
	//                 <i class="iconfont icon-close modal-close" v-on:click="status.shareModal=false"></i>
	//             </div>
	//             <div class="modal-content api-share">
	//                 <div class="modal-layout-box form" v-show="!status.shareCreateModal">
	//                     <p class="title">分享列表</p>
	//                     <ul>
	//                         <li class="api-share-item" v-for="item in shares">
	//                             <div class="cb">
	//                                 <a class="fl api-share-title" target="_blank" v-link="'/share/'+item.id">[{{item.username}}] {{item.name}}</a>
	//                                 <div class="fr">
	//                                     <i class="iconfont icon-lock" v-on:click="shareItemClockClick"></i>
	//                                     <i class="iconfont icon-close" v-on:click="deleteShare(item)"></i>
	//                                 </div>
	//                                 <input type="text" placeholder="空则表示不用密码" v-on:blur="shareItemPasswordBlur(item,$event)" data-value="{{item.password}}" class="text api-share-pwd-box" value="{{item.password}}">
	//                             </div>
	//                             <div class="cb">
	//                                 <span v-if="item.shareAll == 'YES'">所有模块</span>
	//                                 <span v-else>
	//                                     <span v-for="m in item.shareModules">{{m.name}},</span>
	//                                 </span>
	//                                 <span class="fr">{{item.createTime}}</span>
	//                             </div>
	//                         </li>
	//                     </ul>
	//                     <br/>
	//                     <button class="btn btn-primary middle" v-on:click="status.shareCreateModal=true">创建新分享</button>
	//                 </div>
	//                 <div class="modal-layout-box form " v-show="status.shareCreateModal">
	//                     <form onsubmit="return false;" id="share-form" >
	//                         <p class="title">创建新的分享</p>
	//                         <div class="item">
	//                             <div class="col-sm-2 label">整个项目</div>
	//                             <div class="col-sm-10 full-text">
	//                                 <input type="checkbox" v-model="flag.shareAll">
	//                             </div>
	//                         </div>
	//                         <div class="item" v-if="!flag.shareAll">
	//                             <div class="col-sm-2 label">勾选模块</div>
	//                             <div class="col-sm-10 full-text">
	//                                 <label v-for="item in modules" class="api-share-cm-label">
	//                                     <input type="checkbox" name="moduleId" value="{{item.id}}"> {{item.name}}</label>
	//                             </div>
	//                         </div>
	//                         <div class="item">
	//                             <div class="col-sm-2 label">名称</div>
	//                             <div class="col-sm-10">
	//                                 <input type="text" name="name" maxlength="20" class="text" placeholder="请输入分享的名称">
	//                             </div>
	//                         </div>
	//                         <div class="item">
	//                             <div class="col-sm-2 label">阅读密码</div>
	//                             <div class="col-sm-10">
	//                                 <input type="text" name="password" maxlength="10" class="text" placeholder="请输入阅读密码">
	//                             </div>
	//                         </div>
	//                         <div class="item">
	//                             <div class="col-sm-2 label"></div>
	//                             <div class="col-sm-10">
	//                                 <button class="btn btn-default-box middle" tabindex="3"
	//                                         v-on:click="status.shareCreateModal=false">返回
	//                                 </button>
	//                                 <button class="btn btn-primary middle" v-on:click="shareCreate" tabindex="2">确定</button>
	//                             </div>
	//                         </div>
	//                     </form>
	//                 </div>
	//             </div>
	//         </div>
	//         <!-- modal list end -->
	//     </template>
	//
	//     <!-- loading start -->
	//     <template v-if="status.loading">
	//         <div class="spinner">
	//             <div class="double-bounce1"></div>
	//             <div class="double-bounce2"></div>
	//         </div>
	//     </template>
	//     <!-- loading end -->
	// </template>
	//
	//
	// <script>

/***/ }),
/* 191 */
/***/ (function(module, exports, __webpack_require__) {

	"use strict";

	Object.defineProperty(exports, "__esModule", {
	    value: true
	});

	var _stringify = __webpack_require__(59);

	var _stringify2 = _interopRequireDefault(_stringify);

	var _assign = __webpack_require__(192);

	var _assign2 = _interopRequireDefault(_assign);

	var _apiEditorRequestHeaders = __webpack_require__(214);

	var _apiEditorRequestHeaders2 = _interopRequireDefault(_apiEditorRequestHeaders);

	var _apiEditorRequestArgs = __webpack_require__(217);

	var _apiEditorRequestArgs2 = _interopRequireDefault(_apiEditorRequestArgs);

	var _apiEditorResponseArgs = __webpack_require__(220);

	var _apiEditorResponseArgs2 = _interopRequireDefault(_apiEditorResponseArgs);

	var _utils = __webpack_require__(40);

	var _utils2 = _interopRequireDefault(_utils);

	__webpack_require__(223);

	__webpack_require__(259);

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

	//todo 浏览模式的环境切换样式
	//todo 编辑模式仿造postman
	_apiEditorRequestHeaders2.default.name = 'request-headers-vue';
	_apiEditorRequestHeaders2.default.props = ['requestHeaders', 'editing'];

	_apiEditorRequestArgs2.default.name = 'request-args-vue';
	_apiEditorRequestArgs2.default.props = ['requestArgs', 'editing'];

	_apiEditorResponseArgs2.default.name = 'response-args-vue';
	_apiEditorResponseArgs2.default.props = ['responseArgs', 'editing'];
	//
	//this is nothing
	var gdata = {
	    status: {
	        folderModal: false, //文件夹新增编辑模态
	        moduleModal: false, //模块新增编辑模态
	        importModal: false, //导入json模态
	        shareModal: false, //分享模态
	        shareCreateModal: false,
	        envModal: false, //环境变量编辑模态
	        loading: true, //loading
	        apiLoading: false, //api价值
	        moveCopyModal: false, //复制移动模态
	        moveCopyId: '', //复制移动id
	        showEnvs: false, //环境变量显示状态
	        showEnvValues: false,
	        showModuleGlobal: false
	    },
	    ws: { //websocket操作
	        instance: null,
	        connected: false,
	        message: '',
	        log: '',
	        url: '',
	        destroy: function destroy() {
	            if (this.instance) {
	                this.instance.close();
	                this.connected = false;
	                this.log = '';
	                this.url = '';
	                this.message = '';
	            }
	        }
	    },
	    flag: { //临时变量标识对象
	        import: null,
	        actionId: null, //api下拉
	        moduleActionId: '', //module 下拉
	        move: null,
	        moveCopyName: null,
	        moveCopySelectModuleId: null,
	        moveCopySelectFolderId: null,
	        moveCopyId: null,
	        resultActive: 'content',
	        tempEnv: { vars: [] },
	        prefix: '$prefix$',
	        varname: '$变量名$',
	        tab: 'body',
	        headers: ["User-Agent", "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Accept-Datetime", "Authorization", "Cache-Control", "Connection", "Cookie", "Content-Length", "Content-MD5", "Content-Type"],
	        requests: ["name", "id", "password", "email", "createtime", "datetime", "createTime", "dateTime", "user", "code", "status", "type", "msg", "message", "time", "image", "file", "token", "accesstoken", "access_token", "province", "city", "area", "description", "remark", "logo"],
	        responses: ["name", "id", "password", "email", "createtime", "datetime", "createTime", "dateTime", "user", "code", "status", "type", "msg", "message", "error", "errorMsg", "test", "fileAccess", "image", "require", "token", "accesstoken", "accessToken", "access_token", "province", "city", "area", "remark", "description", "logo"],
	        searchInput: '',
	        shareAll: false,
	        needPassword: false,
	        password: ''
	    },
	    error: { //错误标识
	        projectNotExists: false,
	        noModule: false,
	        noInterface: false
	    },
	    share: true,
	    envs: null, //环境变量
	    importValue: null, //导入的json值
	    editing: false, //编辑状态
	    folderName: '', //文件夹名称
	    moduleName: '', //模块名称
	    show: 'doc',
	    modules: [], //当前项目的所有模块数据
	    tempModules: [], //用于搜索
	    project: {}, //当前项目数据
	    currentApi: { result: null }, //当前api对象
	    currentModule: {}, //当前模块对象
	    currentFolder: null, //当前文件夹数据
	    currentEnv: null, //当前环境变量数据
	    id: '', //当前项目id
	    extVer: false, //浏览器扩展版本
	    collapse: false, //文件夹折叠状态
	    results: {}, //所有结果临时数据
	    shares: null
	};
	//页面全局变量
	var page = {
	    x2js: new X2JS(),
	    listener: {
	        success: function success(e) {
	            new Result().resolve(e.detail, gdata.currentApi.contentType);
	        },
	        error: function error(e) {
	            console.log("result.error");
	        },
	        complete: function complete(e) {
	            xhrComplete(gdata, e);
	        }
	    },
	    pushMessage: function pushMessage(data) {
	        var detail = { createTime: new Date().toLocaleString(), content: data };
	        document.dispatchEvent(new CustomEvent('project.message', { detail: detail }));
	    },
	    updateInterface: function updateInterface(id) {
	        _utils2.default.get('/interface/' + id + '.json', {}, function (rs) {
	            page.pushMessage('修改接口：' + rs.data.interface.name);
	            var isBreak = void 0;
	            gdata.modules.forEach(function (m) {
	                m.folders.forEach(function (f) {
	                    var index = -1;
	                    var originalFolderId = void 0;
	                    f.children.forEach(function (item, i) {
	                        if (item.id == id) {
	                            index = i;
	                            originalFolderId = item.folderId;
	                            return true;
	                        }
	                    });
	                    if (rs.data.interface.folderId == originalFolderId) {
	                        if (index >= 0) {
	                            f.children.$set(index, rs.data.interface);
	                            isBreak = true;
	                            return true;
	                        }
	                    }
	                });
	                if (isBreak) {
	                    return true;
	                }
	            });
	        });
	    },
	    createInterface: function createInterface(newInterfaceId, folderId) {
	        _utils2.default.get('/interface/' + newInterfaceId + '.json', {}, function (rs) {
	            page.pushMessage('新增接口：' + rs.data.interface.name);
	            gdata.modules.forEach(function (m) {
	                var isBreak = void 0;
	                m.folders.forEach(function (item, i) {
	                    if (item.id == folderId) {
	                        item.children.push(rs.data.interface);
	                        isBreak = true;
	                        return true;
	                    }
	                });
	                if (isBreak) {
	                    return true;
	                }
	            });
	        });
	    },
	    deleteInterface: function deleteInterface(id) {
	        gdata.modules.forEach(function (m) {
	            var isBreak = void 0;
	            m.folders.forEach(function (f) {
	                var index = null;
	                f.children.forEach(function (item, i) {
	                    if (item.id == id) {
	                        index = item;
	                        isBreak = true;
	                        return true;
	                    }
	                });
	                if (index) {
	                    if (gdata.currentApi.id == index.id) {
	                        gdata.show = 'doc';
	                    }
	                    page.pushMessage('删除接口：' + index.name);
	                    f.children.$remove(index);
	                    return true;
	                }
	            });
	            if (isBreak) {
	                return true;
	            }
	        });
	    },
	    createFolder: function createFolder(newfolderId, moduleId) {
	        _utils2.default.get('/interfacefolder/' + newfolderId + '.json', {}, function (rs) {
	            page.pushMessage('新增分类：' + rs.data.folder.name);
	            gdata.modules.forEach(function (item) {
	                if (item.id == moduleId) {
	                    item.folders.push(rs.data.folder);
	                    return true;
	                }
	            });
	        });
	    },
	    updateFolder: function updateFolder(id) {
	        _utils2.default.get('/interfacefolder/' + id + '.json', {}, function (rs) {
	            page.pushMessage('更新分类：' + rs.data.folder.name);
	            gdata.modules.forEach(function (m) {
	                var isBreak = void 0;
	                m.folders.forEach(function (item, index) {
	                    if (item.id == id) {
	                        rs.data.folder.children = item.children;
	                        var folder = $.extend(item, rs.data.folder);
	                        m.folders.$set(index, folder);
	                        isBreak = true;
	                        return true;
	                    }
	                });
	                if (isBreak) {
	                    return true;
	                }
	            });
	        });
	    },
	    deleteFolder: function deleteFolder(folderId) {
	        gdata.modules.forEach(function (m) {
	            var folder = null;
	            m.folders.forEach(function (item, index) {
	                if (item.id == folderId) {
	                    folder = item;
	                    return true;
	                }
	            });
	            if (folder != null) {
	                if (gdata.currentApi.folderId == folder.id) {
	                    gdata.show = 'doc';
	                }
	                m.folders.$remove(folder);
	                page.pushMessage('删除分类：' + folder.name);
	                return true;
	            }
	        });
	    },
	    createModule: function createModule(moduleId) {
	        _utils2.default.get('/module/' + moduleId + '.json', {}, function (rs) {
	            page.pushMessage('新增模块：' + rs.data.module.name);
	            gdata.modules.push(rs.data.module);
	        });
	    },
	    updateModule: function updateModule(moduleId) {
	        _utils2.default.get('/module/' + moduleId + '.json', {}, function (rs) {
	            page.pushMessage('更新模块：' + rs.data.module.name);
	            gdata.modules.forEach(function (item, index) {
	                if (item.id == moduleId) {
	                    rs.data.module.folders = item.folders;
	                    var module = $.extend(item, rs.data.module);
	                    gdata.modules.$set(index, module);
	                }
	            });
	        });
	    },
	    deleteModule: function deleteModule(moduleId) {
	        var module = void 0;
	        gdata.modules.forEach(function (item) {
	            if (item.id == moduleId) {
	                module = item;
	                return true;
	            }
	        });
	        if (module) {
	            if (gdata.currentModule.id == module.id) {
	                if (gdata.modules.length > 0) {
	                    gdata.currentModule = gdata.modules[0];
	                    gdata.show = 'doc';
	                } else {
	                    gdata.error.noModule = true;
	                }
	            }
	            page.pushMessage('删除模块：' + module.name);
	            gdata.modules.$remove(module);
	        }
	    },
	    task: {
	        instance: null,
	        num: 0,
	        init: function init() {
	            var ws = new WebSocket(_utils2.default.config.websocket + '/api/message');
	            this.instance = ws;
	            var self = this;
	            function reconnect() {
	                if (self.num < 3) {
	                    ws = new WebSocket(_utils2.default.config.websocket + '/api/message');
	                    console.log('reconnect');
	                }
	            }
	            ws.onopen = function (evt) {
	                ws.send("projectId:" + gdata.id);
	                setInterval(function () {
	                    if (ws.readyState == ws.OPEN) {
	                        ws.send("projectId:" + gdata.id);
	                    }
	                }, 55000);
	            };
	            ws.onclose = function (evt) {
	                switch (evt.code) {
	                    case 1006:
	                    case 1001:
	                        setTimeout(reconnect, 5000);
	                        break;
	                }
	            };
	            ws.onmessage = function (evt) {
	                var data = _utils2.default.toJSON(evt.data);
	                if (data.projectId != gdata.id) {
	                    return;
	                }
	                if (data.token.substring(0, 10) == _utils2.default.token().substring(0, 10)) {
	                    return;
	                }
	                switch (data.action) {
	                    case "interface.update":
	                        page.updateInterface(data.interfaceId);
	                        break;
	                    case "interface.create":
	                    case "interface.copy":
	                        page.createInterface(data.interfaceId, data.ext[0]);
	                        break;
	                    case "interface.delete":
	                        page.deleteInterface(data.interfaceId);
	                        break;
	                    case "folder.create":
	                        page.createFolder(data.folderId, data.ext[0]);
	                        break;
	                    case "folder.update":
	                        page.updateFolder(data.folderId);
	                        break;
	                    case "folder.delete":
	                        page.deleteFolder(data.folderId);
	                        break;
	                    case "module.create":
	                        page.createModule(data.moduleId);
	                        break;
	                    case "module.update":
	                        page.updateModule(data.moduleId);
	                        break;
	                    case "module.delete":
	                        page.deleteModule(data.moduleId);
	                        break;

	                }
	            };
	            ws.onerror = function (evt) {
	                console.log('onerror');
	            };
	        },
	        destroy: function destroy() {
	            if (this.instance) {
	                this.instance.close();
	                this.instance = null;
	            }
	        }
	    },
	    defaultView: function defaultView(self) {
	        self.show = 'doc';
	    },
	    initModules: function initModules(module) {
	        if (!module.requestArgs) {
	            module.requestArgs = [];
	        }
	        if (!module.requestHeaders) {
	            module.requestHeaders = [];
	        }
	        if (!module.folders) {
	            module.folders = [];
	        }
	        module.requestArgs = _utils2.default.toJSON(module.requestArgs);
	        module.requestHeaders = _utils2.default.toJSON(module.requestHeaders);
	    },
	    reget: function reget(self) {
	        if (!self) {
	            self = gdata;
	        }
	        self.status.loading = true;
	        self.error.projectNotExists = false;
	        self.error.noModule = false;
	        self.error.noInterface = false;
	        self.currentApi = { result: null };
	        var data = {},
	            url = '/project/' + self.id + '.json';
	        _utils2.default.get(url, data, function (rs) {
	            if (rs.code == 0) {
	                if (!rs.data.project) {
	                    self.error.projectNotExists = true;
	                    return;
	                }
	                var modules = rs.data.modules;
	                modules.forEach(function (d) {
	                    page.initModules(d);
	                });
	                self.project = rs.data.project;
	                if (self.project.environments) {
	                    self.envs = _utils2.default.toJSON(self.project.environments);
	                    if (!self.envs) {
	                        self.envs = [];
	                    }
	                    if (!Array.isArray(self.envs)) {
	                        self.envs = [];
	                    }
	                    var envId = localStorage.getItem(self.id + '_env');
	                    if (envId) {
	                        var temp = void 0;
	                        self.envs.forEach(function (item) {
	                            if (item.id == envId) {
	                                temp = item;
	                                return true;
	                            }
	                        });
	                        if (!temp) {
	                            temp = self.envs[0];
	                        }

	                        self.currentEnv = temp;
	                    } else {
	                        self.currentEnv = self.envs[0];
	                    }
	                    if (!self.currentEnv) {
	                        self.currentEnv = { name: '环境切换', vars: [] };
	                    }
	                    if (!self.currentEnv.vars) {
	                        self.currentEnv.vars = [];
	                    }
	                } else {
	                    self.envs = [];
	                    self.currentEnv = { name: '环境切换', vars: [] };
	                }
	                self.project = (0, _assign2.default)({}, self.project, self.project);
	                gdata.modules = rs.data.modules;
	                gdata.tempModules = rs.data.modules;
	                gdata.currentModule = gdata.modules[0];
	                var isNew = self.$route.query.n == 'y';
	                if (isNew && self.project.editable == 'YES') {
	                    self.editing = true;
	                    self.show = 'api';
	                    self.currentFolder = gdata.modules[0].folders[0];
	                    self.currentApi = page.initInterfaceParameters(self.currentFolder.id);
	                    initInterface(self, self.currentApi);
	                }
	            } else {
	                toastr.error(rs.errorMsg);
	            }
	        }, function () {
	            self.status.loading = false;
	        });
	    },
	    copyMove: function copyMove(data, self) {
	        data.targetId = gdata.flag.moveCopyId;
	        gdata.status.moveCopyModal = false;
	        data.projectId = gdata.id;
	        _utils2.default.post('/project/' + gdata.id + '/copymove.json', data, function () {
	            toastr.success('操作成功', '', { timeOut: 2000, "positionClass": "toast-top-right" });
	            page.reget(self);
	        });
	    },
	    renderViewBox: function renderViewBox(value) {
	        $('#view-box').html('');
	        setTimeout(function () {
	            editormd.markdownToHTML('view-box', {
	                htmlDecode: "style,script,iframe", // you can filter tags decode
	                markdown: value || '',
	                emoji: false,
	                taskList: false,
	                tex: false, // 默认不解析
	                flowChart: false, // 默认不解析
	                sequenceDiagram: false // 默认不解析
	            });
	        }, 10);
	    },
	    initInterfaceParameters: function initInterfaceParameters(folderId) {
	        return {
	            protocol: localStorage.getItem('form.protocol') || 'HTTP',
	            requestMethod: localStorage.getItem('form.requestMethod') || 'GET',
	            dataType: localStorage.getItem('form.dataType') || 'X-WWW-FORM-URLENCODED',
	            contentType: localStorage.getItem('form.contentType') || 'JSON',
	            requestHeaders: [],
	            requestArgs: [],
	            responseArgs: [],
	            result: '',
	            url: '',
	            folderId: folderId,
	            status: 'ENABLE'
	        };
	    }
	};

	//导出数据
	exports.default = {
	    components: {
	        RequestHeadersVue: _apiEditorRequestHeaders2.default,
	        RequestArgsVue: _apiEditorRequestArgs2.default,
	        ResponseArgsVue: _apiEditorResponseArgs2.default
	    },
	    created: function created() {
	        $("body").removeClass('loading');
	    },
	    route: {
	        data: function data(transition) {
	            //初始化
	            this.currentFolder = null;
	            this.currentModule = {};
	            this.currentApi = { result: null };
	            this.$parent.$data.pageName = '接口列表';
	            this.id = transition.to.params.id;
	            var self = this;
	            //如果实时会出现获取不到的问题
	            setTimeout(function () {
	                self.extVer = document.body.getAttribute("data-ext-version");
	                if (self.extVer) {
	                    self.extVer = parseFloat(self.extVer);
	                }
	                console.log('extVer:' + self.extVer);
	            }, 1000);
	            //
	            (function () {
	                var clipboard = new Clipboard('#api-result-copy', {
	                    target: function target() {
	                        return document.querySelector('#api-result-content');
	                    }
	                });
	                var headerClipboard = new Clipboard('#api-result-header-copy', {
	                    target: function target() {
	                        return document.querySelector('#api-result-headers');
	                    }
	                });

	                clipboard.on('success', function (e) {
	                    //console.log(e);
	                });
	                clipboard.on('error', function (e) {
	                    console.log(e);
	                });
	            })();

	            //
	            (function () {
	                $('body').undelegate('.xyj-dropdown-toggle', 'click').delegate('.xyj-dropdown-toggle', 'click', function (e) {
	                    $(this).next().toggle();
	                    e.stopPropagation();
	                });

	                $('body').undelegate('.icon-menu', 'click').delegate('.icon-menu', 'click', function (e) {
	                    var right = document.documentElement.clientWidth - 1485;
	                    if (right < 15) {
	                        right = 15;
	                    }
	                    if (document.documentElement.clientWidth < 1255) {
	                        right = document.documentElement.clientWidth - 1255 + 15;
	                    }
	                    var top = $(this).offset().top + 50;
	                    $('#api-menus').css({ top: top, right: right }).show();
	                    e.stopPropagation();
	                });
	                $(window).resize(function () {
	                    //修改menu位置
	                    var right = document.documentElement.clientWidth - 1485;
	                    if (right < 15) {
	                        right = 15;
	                    }
	                    if (document.documentElement.clientWidth < 1255) {
	                        right = document.documentElement.clientWidth - 1255 + 15;
	                    }
	                    $('#api-menus').css({ right: right });
	                });
	                $(document).click(function () {
	                    $('.xyj-dropdown-list').hide();
	                    $('#api-menus').hide();
	                    self.flag.actionId = null;
	                    self.status.showEnvs = false;
	                    self.flag.moduleActionId = null;
	                });
	            })();
	            page.task.destroy();
	            page.task.init();

	            //加载数据
	            this.$parent.projectId = this.id;
	            this.show = 'doc';
	            page.reget(this);
	            if (window._czc) {
	                _czc.push(["_trackPageview", location.pathname + location.hash, document.referrer]);
	            }
	        },
	        activate: function activate(transition) {
	            this.$parent.showProject = true;
	            $('.dashboard').addClass('max');
	            transition.next();
	            document.addEventListener('result.success', page.listener.success);
	            document.addEventListener('result.complete', page.listener.complete);
	            document.addEventListener('result.error', page.listener.error);
	        },
	        deactivate: function deactivate() {
	            this.$parent.showProject = false;
	            $('.dashboard').removeClass('max');
	            window.editor = null;
	            document.removeEventListener('result.success', page.listener.success, false);
	            document.removeEventListener('result.error', page.listener.error, false);
	            document.removeEventListener('result.complete', page.listener.complete);
	            page.task.destroy();
	        }
	    },
	    computed: {
	        requestURL: function requestURL() {
	            var temp = this.currentApi.url;
	            if (!temp) {
	                temp = '';
	            } else {
	                if (this.currentEnv && this.currentEnv.vars) {
	                    this.currentEnv.vars.forEach(function (item) {
	                        var reg = new RegExp('\\$' + item.name + '\\$', 'g');
	                        temp = temp.replace(reg, item.value);
	                    });
	                    if (this.currentApi.urlArgs && this.currentApi.urlArgs.length > 0) {
	                        this.currentApi.urlArgs.forEach(function (item) {
	                            var name = '{' + item.name + '}';
	                            var reg = new RegExp(name, 'g');
	                            temp = temp.replace(reg, item.value || name);
	                        });
	                    }
	                } else {
	                    temp = '';
	                }
	            }
	            $('#requestURL').val(temp);
	            return temp;
	        },
	        requestArgsPreview: function requestArgsPreview() {
	            var type = this.currentApi.dataType;
	            if (type == 'XML') {
	                //todo 增加全局操作
	                var args = _utils2.default.toJSON(this.currentModule.requestArgs);
	                var text = '<?xml version="1.0" encoding="UTF-8"?>\n<xml>\n';
	                args.forEach(function (item) {
	                    var name = item.name.replace(/\s/g, '');
	                    text += '    <' + name + '>' + (item.defaultValue || '') + '</' + name + '>\n';
	                });
	                args = _utils2.default.toJSON(this.currentApi.requestArgs);
	                args.forEach(function (item) {
	                    if (item.name) {
	                        var name = item.name.replace(/\s/g, '');
	                        text += '    <' + name + '>' + (item.defaultValue || '') + '</' + name + '>\n';
	                    }
	                });
	                text += '</xml>';
	                return text;
	            } else if (type == 'JSON') {
	                var obj = getRequestArgsObject(this.currentApi.requestArgs);
	                if (obj) {
	                    return (0, _stringify2.default)(obj, null, '\t');
	                }
	                return '{}';
	            }
	            return 'data not support';
	        },
	        editable: function editable() {
	            return this.project.editable == 'YES';
	        }
	    },
	    watch: {
	        "status.folderModal": function statusFolderModal(value) {
	            if (!value) {
	                var self = this;
	                /*setTimeout(function () {
	                    self.$data.currentFolder = null;
	                }, 100)*/
	            }

	            if (value) {
	                $("body").addClass("modal-open");
	            } else {
	                $("body").removeClass("modal-open");
	            }
	        },
	        "status.moduleModal": function statusModuleModal(value) {
	            if (!value) {
	                var self = this;
	                setTimeout(function () {
	                    self.$data.moduleId = '';
	                    self.$data.moduleName = '';
	                }, 100);
	            }

	            if (value) {
	                $("body").addClass("modal-open");
	            } else {
	                $("body").removeClass("modal-open");
	            }
	        },
	        "status.importModal": function statusImportModal(value) {
	            if (value) {
	                $("body").addClass("modal-open");
	            } else {
	                $("body").removeClass("modal-open");
	            }
	        },
	        "status.envModal": function statusEnvModal(value) {
	            if (value) {
	                $("body").addClass("modal-open");
	            } else {
	                $("body").removeClass("modal-open");
	            }
	        },
	        "id": function id(value) {},
	        "status.loading": function statusLoading(value) {
	            if (!value) {
	                document.title = (this.project.name || '') + '-' + (this.currentModule.name || '');
	                if (window.editor && window.editor) {
	                    window.editor.editor.remove();
	                    window.editor = null;
	                }
	                var value = this.project.details;
	                if (this.editing && this.show == 'doc' && !window.editor) {
	                    initEditor(this.project.details, this);
	                }
	                if (!this.editing) {
	                    page.renderViewBox(value);
	                }
	            }
	        },
	        "editing": function editing(value) {
	            if (value) {
	                if (!window.editor && this.show == 'doc') {
	                    var desc = this.project.details;
	                    initEditor(desc, this);
	                }
	            } else {
	                if (this.show == 'doc') {
	                    page.renderViewBox(this.project.details);
	                } else if (this.show == 'api') {
	                    initInterface(this, this.currentApi);
	                } else if (this.show == 'module') {
	                    this.show = 'doc';
	                    page.renderViewBox(this.project.details);
	                }
	            }
	            _czc.push(["_trackEvent", "接口", "切换模式", value + ""]);
	        },
	        "show": function show(value) {
	            if (value == 'doc') {
	                this.currentApi = { result: null };
	                this.ws.destroy();
	                if (this.editing) {
	                    if (!window.editor) {
	                        var desc = this.project.details;
	                        initEditor(desc, this);
	                    }
	                }
	            } else if (value == 'module') {
	                this.currentApi = { result: null };
	            } else {}
	        },
	        "currentApi.result": function currentApiResult(value) {
	            if (this.currentApi.id) {
	                if (!this.results[this.currentApi.id]) {
	                    this.results[this.currentApi.id] = {};
	                }
	                this.results[this.currentApi.id].content = value;
	            }
	        },
	        "currentApi.resultHeaders": function currentApiResultHeaders(value) {
	            if (this.currentApi.id) {
	                if (!this.results[this.currentApi.id]) {
	                    this.results[this.currentApi.id] = {};
	                }
	                this.results[this.currentApi.id].headers = value;
	            }
	        },
	        "currentEnv": function currentEnv(value) {
	            if (value) {
	                localStorage.setItem(this.id + '_env', value.id);
	            }
	        }
	    },
	    data: function data() {
	        return gdata;
	    },
	    methods: {
	        search: function search() {
	            var modules = [];
	            var text = this.flag.searchInput;
	            if (text.trim().length == 0) {
	                modules = gdata.tempModules;
	            } else {
	                gdata.tempModules.forEach(function (d) {
	                    var folders = [];
	                    d.folders && d.folders.forEach(function (folder) {
	                        var isMatch = void 0,
	                            children = [];
	                        folder.children && folder.children.forEach(function (api) {
	                            if (api.name && api.name.indexOf(text) != -1 || api.url && api.url.indexOf(text) != -1 || api.description && api.description.indexOf(text) != -1) {
	                                isMatch = true;
	                                children.push(api);
	                            }
	                        });

	                        //如果文件夹名称匹配，则放入所有API
	                        if (folder.name.indexOf(text) != -1) {
	                            isMatch = true;
	                            children = folder.children;
	                        }
	                        //如果结果匹配,则复制所有数据，不包含children；
	                        if (isMatch) {
	                            var temp = $.extend(true, {}, folder);
	                            temp.children = children;
	                            folders.push(temp);
	                        }
	                    });
	                    //表示已匹配
	                    if (folders.length > 0) {
	                        var temp = $.extend(true, {}, d);
	                        temp.folders = folders;
	                        modules.push(temp);
	                    }
	                });
	            }
	            gdata.modules = modules;
	            if (modules.length > 0) {
	                gdata.currentModule = modules[0];
	                if (this.show == 'api') {
	                    gdata.currentFolder = modules[0].folders[0];
	                    gdata.currentApi = modules[0].folders[0].children[0];
	                    initInterface(this, gdata.currentApi);
	                }
	            } else {
	                gdata.currentModule = {};
	                gdata.currentApi = { result: null };
	                gdata.currentFolder = [];
	            }
	            if (!$('#view-box').html()) {
	                page.renderViewBox(this.project.details);
	            }
	            //gdata.show = 'doc';
	        },
	        updateProject: function updateProject() {
	            console.log(this.project.details);
	            this.project.details = window.editor.getMarkdown();

	            _utils2.default.post('/project/' + this.id + '.json', { details: this.project.details }, function () {
	                toastr.success('修改成功');
	            });
	        },
	        envOver: function envOver(data, e) {
	            this.status.showEnvValues = true;
	            this.flag.tempEnv = $.extend(true, {}, data);
	            var top = $(e.target).offset().top - $(e.target).parent().offset().top;
	            $('#api-env-content').css('top', top).show();
	        },
	        envClick: function envClick(e) {
	            $('#api-env-details').css('left', $(e.currentTarget).offset().left);
	            this.status.showEnvs = true;
	            _czc.push(["_trackEvent", '接口', '环境变量点击']);
	        },
	        envEdit: function envEdit() {
	            this.status.envModal = true;
	            this.flag.tempEnv.vars.push({});
	            _czc.push(["_trackEvent", '接口', '环境变量编辑']);
	        },
	        envNewLine: function envNewLine(index) {
	            if (index == this.flag.tempEnv.vars.length - 1) {
	                this.flag.tempEnv.vars.push({});
	            }
	        },
	        createEnv: function createEnv() {
	            this.status.envModal = true;
	            this.flag.tempEnv = { vars: [{}] };
	            _czc.push(["_trackEvent", '接口', '环境变量创建']);
	        },
	        envSave: function envSave() {
	            var self = this;
	            if (!this.flag.tempEnv.name) {
	                toastr.error('请输入环境名称');
	                return false;
	            }
	            if (this.flag.tempEnv.vars) {
	                this.flag.tempEnv.vars = this.flag.tempEnv.vars.filter(function (item) {
	                    return item.name != undefined && item.name != null && item.name != '';
	                });
	            }
	            if (!this.flag.tempEnv.vars) {
	                this.flag.tempEnv.vars = [];
	            }
	            if (this.flag.tempEnv.t) {
	                var t = this.flag.tempEnv.t;
	                var index = this.envs.findIndex(function (item) {
	                    return item.t == t;
	                });
	                if (index != -1) {
	                    this.envs.$set(index, this.flag.tempEnv);
	                }
	            } else {
	                this.flag.tempEnv.t = Date.now();
	                this.envs.push(this.flag.tempEnv);
	            }
	            this.envs = this.envs.map(function (item) {
	                return { name: item.name, t: item.t, vars: item.vars };
	            });
	            _utils2.default.post('/project/' + this.id + '.json', { environments: (0, _stringify2.default)(this.envs) }, function (rs) {
	                toastr.success('保存成功');
	                self.status.envModal = false;
	                if (self.envs.length == 1) {
	                    self.currentEnv = self.envs[0];
	                } else {
	                    self.envs.forEach(function (item) {
	                        if (item.t == self.flag.tempEnv.t) {
	                            self.currentEnv = item;
	                        }
	                    });
	                }
	            });
	        },
	        envRemove: function envRemove() {
	            var self = this;
	            var t = this.flag.tempEnv.t;
	            var index = this.envs.findIndex(function (item) {
	                return item.t == self.flag.tempEnv.t;
	            });
	            this.envs.$remove(this.envs[index]);
	            _utils2.default.post('/project/' + this.id + '.json', { environments: (0, _stringify2.default)(this.envs) }, function (rs) {
	                toastr.success('移除成功');
	                if (self.envs.length == 0) {
	                    self.currentEnv = { name: '环境切换', vars: [] };
	                } else {
	                    if (self.currentEnv.t == t) {
	                        self.currentEnv = self.envs[0];
	                    }
	                }
	            });
	            _czc.push(["_trackEvent", '接口', '环境变量移除']);
	        },
	        envCopy: function envCopy() {
	            var vars = $.extend(true, [], this.flag.tempEnv.vars);
	            var temp = { t: Date.now(), name: this.flag.tempEnv.name + 'copy', vars: vars };
	            this.envs.push(temp);
	            var self = this;
	            _utils2.default.post('/project/' + this.id + '.json', { environments: (0, _stringify2.default)(this.envs) }, function (rs) {
	                toastr.success('复制成功');
	            });
	            _czc.push(["_trackEvent", '接口', '环境变量复制']);
	        },
	        folderNew: function folderNew(event) {
	            this.status.folderModal = true;
	            this.currentFolder = null;
	            this.folderName = '';
	            event.stopPropagation();
	            focusFolderName();
	            _czc.push(["_trackEvent", '接口', '创建分类']);
	        },
	        folderEdit: function folderEdit(item, event) {
	            this.status.folderModal = true;
	            this.currentFolder = item;
	            this.folderName = item.name;

	            event.stopPropagation();
	            _czc.push(["_trackEvent", '接口', '编辑分类']);
	        },
	        folderSave: function folderSave() {
	            this.$validate(true);
	            if (this.$ff.invalid) {
	                return false;
	            }
	            if (!this.folderName) {
	                toastr.error('文件夹名称为空');
	                return false;
	            }
	            var name = this.folderName;
	            var self = this;
	            if (this.$data.currentFolder) {
	                var id = self.currentFolder.id;
	                _utils2.default.post('/interfacefolder/' + this.currentFolder.id + ".json", { name: name }, function (rs) {
	                    if (rs.code == 0) {
	                        self.currentModule.folders.forEach(function (item) {
	                            if (item.id == id) {
	                                item.name = name;
	                            }
	                        });
	                    }
	                });
	            } else {
	                _utils2.default.post('/interfacefolder.json', {
	                    moduleId: self.currentModule.id,
	                    projectId: self.currentModule.projectId,
	                    name: name
	                }, function (rs) {
	                    if (rs.code == 0) {
	                        self.currentModule.folders.push({
	                            name: name, id: rs.data, children: []
	                        });
	                    }
	                });
	            }
	            gdata.status.folderModal = false;
	            //this.currentFolder=null;
	            this.folderName = null;
	            _czc.push(["_trackEvent", '接口', '修改分类']);
	        },
	        folderDelete: function folderDelete(item, event) {
	            if (!confirm('是否确认删除?')) {
	                return false;
	            }
	            var self = this;
	            _utils2.default.delete('/interfacefolder/' + item.id + ".json", function (rs) {
	                self.$data.currentModule.folders.$remove(item);
	            });
	            event.stopPropagation();
	            _czc.push(["_trackEvent", '接口', '删除分类']);
	        },
	        folderNewApi: function folderNewApi(item, event) {
	            event.stopPropagation();
	            this.flag.actionId = null;
	            this.show = 'api';
	            if (item == null) {
	                if (this.currentFolder) {
	                    item = this.currentFolder;
	                } else {
	                    item = this.currentModule.folders[0];
	                }
	            }
	            if (!item) {
	                toastr.error('请先添加一个分类。');
	                this.show = 'doc';
	                return false;
	            }
	            //设置默认数据
	            this.currentApi = page.initInterfaceParameters(item.id);
	            this.currentFolder = item;
	            if (document.documentElement.scrollTop > 100) {
	                document.documentElement.scrollTop = 110;
	            }
	            _czc.push(["_trackEvent", '接口', '新建api']);
	        },
	        folderClick: function folderClick(event) {
	            var $dom = $(event.currentTarget);
	            $dom.toggleClass("open");
	            $dom.next().slideToggle();
	            _czc.push(["_trackEvent", '接口', '文件夹点击']);
	        },
	        apiClick: function apiClick(item, folder) {

	            this.currentFolder = folder;
	            this.show = 'api';
	            this.currentApi = item;
	            this.currentModule.lastUpdateTime = item.lastUpdateTime;
	            initInterface(this, item);

	            if (document.documentElement.scrollTop > 100) {
	                document.documentElement.scrollTop = 110;
	            }

	            _czc.push(["_trackEvent", '接口', '点击', this.currentApi.name, this.currentApi.id]);
	        },
	        apiDelete: function apiDelete(item, arr, event) {
	            event.stopPropagation();
	            if (!confirm('是否确认删除?')) {
	                return false;
	            }
	            var self = this;
	            _utils2.default.delete('/interface/' + item.id + ".json", function (rs) {
	                if (item.id == self.currentApi.id) {
	                    page.defaultView(self);
	                }
	                arr.$remove(item);
	            });
	            _czc.push(["_trackEvent", '接口', '接口删除']);
	        },
	        apiSave: function apiSave() {
	            var data = this.currentApi; //$.extend({},this.currentApi);
	            if (!data.id) {
	                data.moduleId = this.currentModule.id;
	                data.projectId = this.currentModule.projectId;
	            }
	            if (!data.folderId) {
	                toastr.error('请选择一个分类');
	                return;
	            }
	            var temp = $.extend({}, data);
	            temp.urlArgs = undefined;
	            /*
	            console.log( "request:"+temp.requestArgs ) ;	
	            $.each(temp.requestArgs,function(name,value) {
	            	console.log( value.name +":"+value.type  ) ;
	            });
	            */
	            temp.requestArgs = (0, _stringify2.default)(temp.requestArgs);
	            temp.responseArgs = (0, _stringify2.default)(temp.responseArgs);
	            temp.requestHeaders = (0, _stringify2.default)(temp.requestHeaders);
	            var self = this;
	            var tempFolder = self.currentFolder;
	            var tempModule = self.currentModule;
	            _utils2.default.post('/interface/save.json', temp, function (rs) {
	                toastr.success('保存成功', '', { timeOut: 2000, "positionClass": "toast-top-right" });
	                var folder = void 0;
	                tempModule.folders.forEach(function (item) {
	                    if (item.id == data.folderId) {
	                        folder = item;
	                        return true;
	                    }
	                });
	                //放置到folder中
	                if (data.id) {
	                    var index = -1;
	                    tempFolder.children.forEach(function (item, i) {
	                        if (item.id == data.id) {
	                            index = i;
	                            return true;
	                        }
	                    });
	                    if (tempFolder.id == data.folderId) {
	                        if (index != -1) {
	                            folder.children.$set(index, data);
	                        }
	                    } else {
	                        folder.children.push(data);
	                        tempFolder.children.$remove(tempFolder.children[index]);
	                        if (tempFolder.id == self.currentFolder.id) {
	                            self.currentFolder = folder;
	                        }
	                    }
	                } else {
	                    data.id = rs.data;
	                    folder.children.push(data);
	                }
	                //设置默认值
	                localStorage.setItem('form.protocol', data.protocol);
	                localStorage.setItem('form.requestMethod', data.requestMethod);
	                localStorage.setItem('form.dataType', data.dataType);
	                localStorage.setItem('form.contentType', data.contentType);
	            });
	            _czc.push(["_trackEvent", '接口', '接口保存']);
	        },
	        apiVarsClick: function apiVarsClick(name, e) {

	            this.currentApi.url = this.currentApi.url + ('$' + name + '$');
	        },
	        apiSubmit: function apiSubmit() {
	            var self = this;
	            //var url = this.requestURL;
	            var url = $('#requestURL').val();
	            var args = getRequestArgs();
	            for (var name in args) {
	                var key = self.currentApi.id + ':args:' + name;
	                var value = args[name];
	                if (typeof value == 'string') {
	                    localStorage.setItem(key, value);
	                }
	            }
	            //如果是图片或二进制
	            if (self.currentApi.contentType == "IMAGE" || self.currentApi.contentType == 'BINARY') {
	                var params = '';
	                for (var p in args) {
	                    params += p + '=' + args[p] + '&';
	                }
	                window.open(url + '?' + params);
	                params = undefined;
	                return true;
	            }

	            var headers = getRequestHeaders();
	            for (var _name in headers) {
	                var _key = self.currentApi.id + ':headers:' + _name;
	                var _value = headers[_name];
	                if (typeof _value == 'string') {
	                    localStorage.setItem(_key, _value);
	                }
	            }

	            var params = {
	                url: url,
	                cache: false,
	                headers: headers,
	                type: self.currentApi.requestMethod,
	                data: args,
	                beforeSend: function beforeSend(xhr) {
	                    xhr.beginTime = Date.now();
	                },
	                dataType: self.currentApi.contentType,
	                crossDomain: true,
	                xhrFields: {
	                    withCredentials: true
	                },
	                jsonpCallback: self.currentApi.contentType == 'JSONP' ? 'callback' : undefined,
	                complete: function complete(xhr, status) {
	                    var e = {
	                        type: status,
	                        text: xhr.responseText || xhr.statusText,
	                        headers: xhr.getAllResponseHeaders(),
	                        readyState: xhr.readyState,
	                        responseText: xhr.responseText,
	                        status: xhr.status || 0,
	                        statusText: xhr.statusText,
	                        useTime: Date.now() - xhr.beginTime
	                    };
	                    if (status != 'success') {
	                        var msg = xhr.responseText || xhr.statusText;
	                        if (status == 'error') {
	                            msg = 'status:' + xhr.status + ' readyState:' + xhr.readyState + '  errorText:' + msg;
	                        }
	                        e.text = msg;
	                    }
	                    xhrComplete(self, { detail: e });
	                },
	                success: function success(rs) {
	                    new Result().resolve(rs, self.currentApi.contentType);
	                    //self.result = rs;
	                }
	            };
	            switch (this.currentApi.dataType) {
	                case "FORM-DATA":
	                    params.contentType = false;
	                    params.processData = false;
	                    break;
	                case "RAW":
	                    params.data = $('#rawBody').val() || '';
	                    params.processData = false;
	                    params.contentType = 'text/plain';
	                    break;
	                case "XML":
	                    params.data = window.aceeditor.getValue();
	                    params.processData = false;
	                    params.contentType = 'text/xml';
	                    break;
	                case "JSON":
	                    params.data = window.aceeditor.getValue();
	                    params.processData = false;
	                    params.contentType = 'application/json';
	                    break;
	                case "BINARY":
	                    params.processData = false;
	                    params.contentType = 'application/octet-stream';
	                    params.data = $('#binaryBody')[0];
	                    break;
	                default:
	                    break;
	            }
	            self.status.apiLoading = true;
	            // chrome 插件中jsonp 会出问题
	            if (this.extVer && self.currentApi.contentType != 'JSONP') {
	                delete params['complete'];
	                delete params['success'];
	                delete params['error'];
	                delete params['beforeSend'];
	                if (this.currentApi.dataType == 'BINARY') {
	                    params.data = '#binaryBody';
	                }
	                var ce = new CustomEvent('request', {
	                    detail: params
	                });
	                document.dispatchEvent(ce);
	            } else {
	                $.ajax(params);
	            }
	            _czc.push(["_trackEvent", '接口', '测试', this.currentApi.name, this.currentApi.id]);
	        },
	        apiMock: function apiMock() {

	            var self = this;
	            //如果是图片或二进制
	            if (self.currentApi.contentType == 'IMAGE') {
	                window.open('http://www.xiaoyaoji.com.cn/test/image/test.jpg');
	                return true;
	            } else if (self.currentApi.contentType == 'BINARY') {
	                window.open('http://www.xiaoyaoji.com.cn/test/binary/blank.exe');
	                return true;
	            }
	            console.log(self.currentApi.responseArgs);
	            var rs = void 0;
	            switch (self.currentApi.contentType) {
	                case "JSON":
	                case "JSONP":
	                    rs = mockJSON(self.currentApi.responseArgs);
	                    break;
	                case "TEXT":
	                    rs = "欢迎使用小幺鸡接口文档管理工具。";
	                    break;
	                case "HTML":
	                    rs = "<html><head><title>标题</title></head><body>欢迎使用小幺鸡接口文档管理工具。</body></html>";
	                    break;
	                case "XML":
	                    rs = mockJSON(self.currentApi.responseArgs);
	                    rs = page.x2js.json2xml_str(rs);
	                    break;
	            }
	            new Result().resolve(rs, self.currentApi.contentType);
	            _czc.push(["_trackEvent", '接口', 'mock', this.currentApi.name, this.currentApi.id]);
	        },
	        moduleDelete: function moduleDelete(item) {
	            if (this.modules.length <= 1) {
	                toastr.error('至少需要保留一个模块');
	                return false;
	            }

	            if (!confirm('是否确认删除?')) {
	                return false;
	            }
	            this.modules.$remove(item);
	            _utils2.default.delete('/module/' + item.id + '.json');
	            if (this.modules.length > 0) {
	                this.currentModule = this.modules[0];
	                this.show = 'doc';
	            } else {
	                this.error.noModule = true;
	            }
	            _czc.push(["_trackEvent", '接口', '模块删除']);
	        },
	        moduleEdit: function moduleEdit(item) {
	            this.status.moduleModal = true;
	            this.moduleName = item.name;
	            this.moduleId = item.id;
	            focusModuleName();
	        },
	        moduleNew: function moduleNew() {
	            this.status.moduleModal = true;
	            focusModuleName();
	            this.moduleName = '';
	        },
	        moduleClick: function moduleClick(item) {
	            if (!item.folders) {
	                item.folders = [];
	            }
	            this.currentModule = item;
	            this.currentApi = {};
	            this.currentFolder = null;
	            this.show = 'doc';
	            _czc.push(["_trackEvent", '接口', '模块点击', item.name, item.id]);
	        },
	        moduleSave: function moduleSave() {
	            this.$validate(true);
	            if (this.$mf.invalid) {
	                return false;
	            }
	            if (!this.moduleName) {
	                toastr.error('模块名称为空');
	                return false;
	            }
	            var self = this;
	            if (this.moduleId) {
	                var moduleId = self.moduleId;
	                var name = self.moduleName;
	                _utils2.default.post('/module/' + moduleId + ".json", { name: name }, function (rs) {
	                    if (rs.code == 0) {
	                        self.modules.forEach(function (item) {
	                            if (item.id == moduleId) {
	                                item.name = name;
	                            }
	                        });
	                    }
	                });
	            } else {
	                var moduleName = this.moduleName;
	                _utils2.default.post('/module.json', { projectId: self.id, name: moduleName }, function (rs) {
	                    if (rs.code == 0) {
	                        var temp = {
	                            name: moduleName,
	                            projectId: self.id,
	                            id: rs.data,
	                            folders: [],
	                            requestHeaders: [],
	                            requestArgs: []
	                        };
	                        gdata.modules.push(temp);
	                        page.initModules(temp);
	                        if (gdata.modules.length == 1) {
	                            gdata.currentModule = gdata.modules[0];
	                        }
	                    }
	                });
	            }
	            gdata.status.moduleModal = false;
	            this.moduleName = '';
	            this.moduleId = '';
	        },
	        moduleUpdateCommonParams: function moduleUpdateCommonParams() {
	            var requestArgs = (0, _stringify2.default)(this.currentModule.requestArgs);
	            var requestHeaders = (0, _stringify2.default)(this.currentModule.requestHeaders);
	            _utils2.default.post('/module/' + this.currentModule.id + '.json', { requestArgs: requestArgs, requestHeaders: requestHeaders }, function (rs) {
	                toastr.success('操作成功');
	            });
	        },
	        insertNewResponseArgsRow: function insertNewResponseArgsRow() {
	            gdata.currentApi.responseArgs.push({ require: "true", children: [], type: 'string' });
	        },
	        insertNewRequestHeadersRow: function insertNewRequestHeadersRow() {
	            gdata.currentApi.requestHeaders.push({ require: 'true', children: [] });
	        },
	        insertNewRequestArgsRow: function insertNewRequestArgsRow() {
	            gdata.currentApi.requestArgs.push({ require: "false", children: [], type: 'string' });
	        },
	        import2GHeaders: function import2GHeaders() {
	            this.status.importModal = true;
	            this.flag.import = "gHeaders";
	        },
	        import2GRequestArgs: function import2GRequestArgs() {
	            this.status.importModal = true;
	            this.flag.import = "gRequestArgs";
	        },
	        import2RequestArgs: function import2RequestArgs() {
	            this.status.importModal = true;
	            this.flag.import = "requestArgs";
	        },
	        import2RequestHeaders: function import2RequestHeaders() {
	            this.status.importModal = true;
	            this.flag.import = "requestHeaders";
	        },
	        import2ResponseArgs: function import2ResponseArgs() {
	            this.status.importModal = true;
	            this.flag.import = "responseArgs";
	        },
	        importOk: function importOk() {
	            if (!this.importValue) {
	                toastr.error('导入内容为空');
	                return false;
	            }

	            var data = null;
	            try {
	                data = _utils2.default.toJSON(this.importValue);
	            } catch (e) {
	                alert('JSON格式有误');
	                return;
	            }
	            var temp = [];
	            parseImportData(data, temp);
	            var self = this;
	            temp.forEach(function (d) {
	                if (self.flag.import == 'requestArgs') {
	                    self.currentApi.requestArgs.push(d);
	                } else if (self.flag.import == 'requestHeaders') {
	                    self.currentApi.requestHeaders.push(d);
	                } else if (self.flag.import == 'responseArgs') {
	                    self.currentApi.responseArgs.push(d);
	                } else if (self.flag.import == 'gHeaders') {
	                    self.currentModule.requestHeaders.push(d);
	                } else if (self.flag.import == 'gRequestArgs') {
	                    self.currentModule.requestArgs.push(d);
	                }
	            });
	            this.status.importModal = false;
	            _czc.push(["_trackEvent", '接口', '导入json']);
	        },
	        wsConnect: function wsConnect() {
	            //var url = this.ws.url;
	            var url = $('#websocketRequestURL').val();
	            var ws = new WebSocket(url);
	            this.ws.instance = ws;
	            var self = this;
	            ws.onopen = function (evt) {
	                self.ws.log = 'connected';
	                self.ws.connected = true;
	            };
	            ws.onclose = function (evt) {
	                self.ws.log += '\nonClose!';
	                self.ws.connected = false;
	            };
	            ws.onmessage = function (evt) {
	                self.ws.log += '\nonMessage:' + evt.data;
	            };
	            ws.onerror = function (evt) {
	                self.ws.log += '\nonError:' + (evt.data || '');
	            };
	            _czc.push(["_trackEvent", '接口', 'websocket测试']);
	        },
	        wsDisconnect: function wsDisconnect() {
	            this.ws.instance.close();
	        },
	        wsSendMessage: function wsSendMessage() {
	            this.ws.instance.send(this.ws.message);
	            this.ws.log += '\n sent message:' + this.ws.message;
	        },

	        listItemCopy: function listItemCopy(type, id, move) {
	            if (type == 'api') {
	                this.flag.moveCopyName = '接口';
	            } else if (type == 'folder') {
	                this.flag.moveCopyName = '分类';
	            }
	            this.flag.move = move == 'move';
	            this.status.moveCopyModal = true;
	            this.flag.moveCopyId = id;
	            _czc.push(["_trackEvent", '接口', '复制移动' + type]);
	        },
	        copyMoveOk: function copyMoveOk() {
	            if (this.flag.move) {
	                if (this.flag.moveCopyName == '分类') {
	                    if (this.flag.moveCopySelectModuleId == this.currentModule.id) {
	                        toastr.error('同一模块无须移动');
	                        return false;
	                    } else {
	                        page.copyMove({ type: 'folder', action: 'move', moduleId: this.flag.moveCopySelectModuleId }, this);
	                    }
	                } else {
	                    page.copyMove({
	                        type: 'api',
	                        action: 'move',
	                        moduleId: this.flag.moveCopySelectModuleId,
	                        folderId: this.flag.moveCopySelectFolderId
	                    }, this);
	                }
	            } else {
	                //copy
	                if (this.flag.moveCopyName == '分类') {
	                    page.copyMove({ type: 'folder', action: 'copy', moduleId: this.flag.moveCopySelectModuleId }, this);
	                } else {
	                    page.copyMove({
	                        type: 'api',
	                        action: 'copy',
	                        moduleId: this.flag.moveCopySelectModuleId,
	                        folderId: this.flag.moveCopySelectFolderId
	                    }, this);
	                }
	            }
	        },
	        openNewWindow: function openNewWindow() {
	            var win = window.open('', 'new');
	            win.document.documentElement.innerHTML = '';
	            win.document.write(_utils2.default.unescape(this.currentApi.result));
	            win.document.close();
	        },
	        shareItemClockClick: function shareItemClockClick(e) {
	            var $dom = $(e.target).parent().next();
	            $dom.show();
	            $dom.focus();
	        },
	        shareItemPasswordBlur: function shareItemPasswordBlur(item, e) {
	            var self = e.target;
	            $(self).hide();
	            var now = $(self).val();
	            var originalValue = $(self).data('value') || '';
	            if (now == originalValue) {
	                return true;
	            }
	            _utils2.default.post('/share/' + item.id + '.json', { password: now }, function (rs) {
	                toastr.success('密码已修改');
	            });
	        },
	        shareCreate: function shareCreate() {
	            var self = this;
	            var data = $('#share-form').serialize() + '&projectId=' + this.id + "&shareAll=" + (this.flag.shareAll ? 'YES' : 'NO');
	            _utils2.default.post('/share.json', data, function (rs) {
	                self.getShares(true);
	                self.status.shareCreateModal = false;
	                toastr.success('创建成功');
	            });
	        },
	        confirmPassword: function confirmPassword() {
	            page.reget(this);
	        },
	        getShares: function getShares(reget) {
	            this.status.shareModal = true;
	            if (this.shares == null || reget) {
	                var self = this;
	                _utils2.default.get('/project/' + this.id + '/shares.json', {}, function (rs) {
	                    self.shares = rs.data.shares;
	                });
	            }
	        },
	        deleteShare: function deleteShare(item) {
	            var self = this;
	            _utils2.default.delete('/share/' + item.id + '.json', function () {
	                self.shares.$remove(item);
	            });
	        }
	    }
	};

	//初始化接口

	function initInterface(self, item) {
	    if (!item.requestArgs) {
	        item.requestArgs = [];
	    }
	    if (!item.requestHeaders) {
	        item.requestHeaders = [];
	    }
	    if (!item.responseArgs) {
	        item.responseArgs = [];
	    }
	    if (!item.resultHeaders) {
	        item.resultHeaders = "";
	    }
	    if (item.requestArgs.constructor.name == 'String') {
	        item.requestArgs = JSON.parse(self.currentApi.requestArgs);
	    }
	    if (item.responseArgs.constructor.name == 'String') {
	        item.responseArgs = JSON.parse(self.currentApi.responseArgs);
	    }
	    if (item.requestHeaders.constructor.name == 'String') {
	        item.requestHeaders = JSON.parse(self.currentApi.requestHeaders);
	    }
	    if (!item.results) {
	        item.results = {};
	    }
	    if (self.results[item.id]) {
	        item.result = self.results[item.id].content;
	        item.resultHeaders = self.results[item.id].headers;
	    } else {
	        //必须需要
	        item.result = undefined;
	        item.resultHeaders = undefined;
	        item.resultStatusCode = undefined;
	        item.resultRunTime = undefined;
	    }
	    if (!item.protocol) {
	        item.protocol = 'HTTP';
	    }
	    if (!item.requestMethod) {
	        item.requestMethod = 'GET';
	    }
	    if (!item.dataType) {
	        item.dataType = 'X-WWW-FORM-URLENCODED';
	    }
	    if (!item.contentType) {
	        item.contentType = 'JSON';
	    }
	    if (!item.url) {
	        item.url = "";
	    }

	    initDefaultData(item.requestHeaders);
	    initDefaultData(item.requestArgs);
	    initDefaultData(item.responseArgs);
	    //从地址上获取
	    item.urlArgs = [];
	    var match = self.requestURL.match(/(\{[a-zA-Z0-9_]+\})/g);
	    if (match != null && match.length > 0) {
	        item.urlArgs = match;
	        item.urlArgs = item.urlArgs.map(function (d) {
	            return { name: d.substring(1, d.length - 1), value: null };
	        });
	    }
	    item.requestArgs.forEach(function (d) {
	        var key = item.id + ':args:' + d.name;
	        var value = localStorage.getItem(key);
	        if (value != undefined && value != '') {
	            d.testValue = value;
	        }
	    });
	    item.requestHeaders.forEach(function (d) {
	        var key = item.id + ':headers:' + d.name;
	        var value = localStorage.getItem(key);
	        if (value != undefined && value != '') {
	            d.testValue = value;
	        }
	    });

	    if (!item.resultHeaders) {
	        item.resultHeaders = '';
	    }
	    if (!item.resultStatusCode) {
	        item.resultStatusCode = 0;
	    }
	    if (!item.resultRunTime) {
	        item.resultRunTime = 0;
	    }

	    self.currentApi = (0, _assign2.default)({}, item, item);

	    //如果是json或者xml的请求数据类型，则提供可视化修改
	    if ((item.dataType == 'JSON' || item.dataType == 'XML') && !self.editing) {
	        initAceEditor(item.dataType, self);
	    }
	}
	//初始化ace编辑器
	function initAceEditor(type, self) {
	    var mode;
	    if (type == 'JSON') {
	        mode = 'ace/mode/json';
	    } else if (type == 'XML') {
	        mode = 'ace/mode/xml';
	    }
	    setTimeout(function () {
	        var aceeditor = ace.edit("ace-editor-box");
	        window.aceeditor = aceeditor;
	        aceeditor.setTheme("ace/theme/chrome");
	        aceeditor.session.setMode(mode);
	        aceeditor.setValue(self.requestArgsPreview);
	    }, 300);
	}
	/**
	 * 请求参数转为对象
	 * @param data
	 * @return object
	 */
	function getRequestArgsObject(data) {
	    var obj = {};
	    data.forEach(function (d) {
	        var name = d.name;
	        switch (d.type) {
	            case 'string':
	                obj[name] = d.testValue || d.defaultValue || '';
	                break;
	            case 'number':
	                obj[name] = d.testValue || d.defaultValue || 0;
	                break;
	            case 'boolean':
	                obj[name] = d.testValue || d.defaultValue || true;
	                break;
	            case 'object':
	                obj[name] = getRequestArgsObject(d.children);
	                break;
	            case 'array':
	                obj[name] = [];
	                break;
	            case 'array[number]':
	                obj[name] = [0, 1];
	                break;
	            case 'array[boolean]':
	                obj[name] = [true];
	                break;
	            case 'array[string]':
	                obj[name] = [''];
	                break;
	            case 'array[object]':
	                obj[name] = [getRequestArgsObject({}, d.children)];
	                break;
	            case 'array[array]':
	                obj[name] = [[]];
	                break;
	            default:
	                obj[name] = '';
	                break;
	        }
	    });
	    return obj;
	}

	/**
	 * 初始化默认值，不初始化vuejs无法监听改变
	 * @param arr
	 */
	function initDefaultData(arr) {
	    arr.forEach(function (d) {
	        d.children = d.children || [];
	        d.testValue = d.testValue || '';
	        initDefaultData(d.children);
	    });
	}

	function focusFolderName() {
	    setTimeout(function () {
	        $("#folderName").focus();
	    }, 100);
	}
	function focusModuleName() {
	    setTimeout(function () {
	        $("#moduleName").focus();
	    }, 100);
	}

	/**
	 * 获取数组类型
	 * @param value
	 * @returns {string}
	 */
	function getArrayValueType(value) {
	    var type = 'array';
	    if (value.length > 0) {
	        var name = value[0].constructor.name;
	        if (name == 'Array') {
	            type = 'array[array]';
	        } else if (name == 'Object') {
	            type = 'array[object]';
	        } else if (name == 'String') {
	            type = 'array[string]';
	        } else if (name == 'Number') {
	            type = 'array[number]';
	        } else if (name == 'Boolean') {
	            type = 'array[boolean]';
	        }
	    }
	    return type;
	}
	/**
	 * 解析导入数据
	 * @param data
	 * @param temp
	 */
	function parseImportData(data, temp) {
	    if (data.constructor.name == 'Array') {
	        var fullObj = {};
	        data.forEach(function (d) {
	            if (d.constructor.name == 'Object') {
	                for (var key in d) {
	                    fullObj[key] = d[key];
	                }
	            } else if (d.constructor.name == 'Array') {
	                parseImportData(d, temp);
	            }
	        });
	        parseImportData(fullObj, temp);
	    } else if (data.constructor.name == 'Object') {
	        for (var key in data) {
	            var v = data[key];
	            if (v != undefined) {
	                var t = { children: [] };
	                t.name = key;
	                if (v.constructor.name == 'Object') {
	                    t.type = 'object';
	                    parseImportData(v, t.children);
	                } else if (v.constructor.name == 'Array') {
	                    t.type = getArrayValueType(v);
	                    if (t.type == 'array[object]') {
	                        parseImportData(v, t.children);
	                    } else if (t.type == 'array[array]') {
	                        parseImportData(v[0], t.children);
	                    }
	                } else if (v.constructor.name == 'String') {
	                    t.type = 'string';
	                } else if (v.constructor.name == 'Number') {
	                    t.type = 'number';
	                } else if (v.constructor.name == 'Boolean') {
	                    t.type = 'boolean';
	                }
	                t.require = 'true';
	                temp.push(t);
	            }
	        }
	    }
	}
	//
	function mockJSON(data) {
	    var rs = {};
	    if (!data) {
	        return [];
	    }
	    data.forEach(function (item) {
	        switch (item.type) {
	            case 'string':
	                rs[item.name] = 'mock';
	                break;
	            case 'number':
	                rs[item.name] = parseInt(Math.random() * 100);
	                break;
	            case 'boolean':
	                rs[item.name] = true;
	                break;
	            case 'object':
	                if (item.children && item.children.length > 0) {
	                    rs[item.name] = mockJSON(item.children);
	                } else {
	                    rs[item.name] = {};
	                }
	                break;
	            case 'array':
	                rs[item.name] = [];
	                break;
	            case 'array[number]':
	                rs[item.name] = [1, 2, 3, 4, 5];
	                break;
	            case 'array[string]':
	                rs[item.name] = ['1', '2', '3', '4', '5'];
	                break;
	            case 'array[boolean]':
	                rs[item.name] = [true, false];
	                break;
	            case 'array[object]':
	                if (item.children && item.children.length > 0) {
	                    rs[item.name] = [mockJSON(item.children)];
	                } else {
	                    rs[item.name] = [{}];
	                }
	                break;
	            case 'array[array]':
	                rs[item.name] = [[1, 2, 3], [4, 5, 6]];
	                break;
	        }
	    });
	    return rs;
	}
	//
	function xhrComplete(self, e) {

	    self.status.apiLoading = false;
	    if (!e.detail) {
	        e.detail = {};
	    }
	    self.currentApi.resultHeaders = e.detail.headers || '';
	    self.currentApi.resultStatusCode = e.detail.status || 0;
	    self.currentApi.resultRunTime = e.detail.useTime || 0;
	    if (e.detail.type != 'success') {
	        var error = e.detail.text;
	        if (e.detail.type == 'parsererror') {
	            //self.currentApi.result = '<div class="db-api-error">'+error+'</div>';
	            new Result().resolve(error, self.currentApi.contentType);
	            return true;
	        }

	        if (e.detail.status == 0) {
	            if (self.extVer) {
	                error = 'URL请求失败';
	            } else {
	                error = '请求地址错误,服务器无响应或JavaScript跨域错误';
	            }
	        }
	        self.currentApi.result = '<div class="db-api-error">' + error + '</div>';
	    }
	}

	function Result() {
	    var jf = new JsonFormater({
	        dom: '#api-result',
	        imgCollapsed: '../assets/jsonformat/images/Collapsed.gif',
	        imgExpanded: '../assets/jsonformat/images/Expanded.gif'
	    });
	    var fn = {
	        JSON: function JSON(data) {
	            try {
	                gdata.currentApi.result = jf.doFormat(data);
	            } catch (e) {
	                gdata.currentApi.result = _utils2.default.escape(data);
	            }
	        },
	        JSONP: function JSONP(data) {
	            gdata.currentApi.result = jf.doFormat(data);
	        },
	        TEXT: function TEXT(data) {
	            gdata.currentApi.result = data;
	        },
	        XML: function XML(data) {
	            if (!window.XMLDocument) {
	                toastr.error('该浏览器不支持XMLDocument');
	                return;
	            }
	            if (data instanceof XMLDocument) {
	                data = new XMLSerializer().serializeToString(data);
	            }
	            gdata.currentApi.result = _utils2.default.escape(data);
	        },
	        HTML: function HTML(data) {
	            gdata.currentApi.result = _utils2.default.escape(data);
	        }
	    };

	    return {
	        resolve: function resolve(data, type) {
	            fn[type](data);
	        }
	    };
	}

	function getRequestArgs() {
	    var args = {};
	    $("#args-form input").each(function () {
	        var type = this.type;
	        var name = this.name;
	        if (args[name]) {
	            var temp = args[name];
	            if (temp.constructor.name != 'Array') {
	                args[name] = [];
	                args[name].push(temp);
	            }
	            if (type == 'file') {
	                args[name].push(this.files[0] || null);
	            } else {
	                args[name].push(this.value);
	            }
	        } else {
	            if (type == 'file') {
	                args[name] = this.files[0] || null;
	            } else {
	                args[name] = this.value;
	            }
	        }
	    });
	    return args;
	}
	function getRequestHeaders() {
	    var headers = {};
	    $("#header-form input").each(function () {
	        headers[$(this).attr("name")] = $(this).val();
	    });
	    headers['Power-By'] = 'http://www.xiaoyaoji.com.cn';
	    return headers;
	}

	function initEditor(value) {
	    if (!value) {
	        value = "";
	    }
	    var width = 904;
	    if (document.documentElement.clientWidth >= 1800) {
	        width = 1160;
	    }
	    window.editor = editormd("editorBox", {
	        width: width,
	        height: 740,
	        path: '../assets/editor.md/lib/',
	        theme: "default",
	        previewTheme: "default",
	        editorTheme: "mdn-like",
	        markdown: value,
	        codeFold: true,
	        //syncScrolling : false,
	        toolbarIcons: function toolbarIcons() {
	            return ["undo", "redo", "|", "bold", "del", "italic", "quote", "|", "h1", "h2", "h3", "h4", "h5", "h6", "|", "list-ul", "list-ol", "hr", "|", "link", "reference-link", "image", "code", "preformatted-text", "code-block", "table", "datetime", "watch", "preview", "fullscreen", "clear", "search", "|", "help", "info"];
	        },
	        saveHTMLToTextarea: true, // 保存 HTML 到 Textarea
	        searchReplace: true,
	        //watch : false,                // 关闭实时预览
	        htmlDecode: "style,script,iframe|on*", // 开启 HTML 标签解析，为了安全性，默认不开启
	        //toolbar  : false,             //关闭工具栏
	        //previewCodeHighlight : false, // 关闭预览 HTML 的代码块高亮，默认开启
	        emoji: false,
	        taskList: false,
	        tocm: true, // Using [TOCM]
	        tex: false, // 开启科学公式TeX语言支持，默认关闭
	        flowChart: false, // 开启流程图支持，默认关闭
	        toolbarAutoFixed: false,
	        sequenceDiagram: false, // 开启时序/序列图支持，默认关闭,
	        dialogLockScreen: true, // 设置弹出层对话框不锁屏，全局通用，默认为true
	        dialogShowMask: false, // 设置弹出层对话框显示透明遮罩层，全局通用，默认为true
	        dialogDraggable: false, // 设置弹出层对话框不可拖动，全局通用，默认为true
	        //dialogMaskOpacity : 0.4,    // 设置透明遮罩层的透明度，全局通用，默认值为0.1
	        //dialogMaskBgColor : "#000", // 设置透明遮罩层的背景颜色，全局通用，默认为#fff
	        //暂时关闭图片上传
	        imageUpload: false,
	        imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
	        imageUploadURL: "./php/upload.php",
	        onload: function onload() {
	            var self = this;
	            /*setTimeout(function () {
	                self.gotoLine(1);
	            }, 100);*/
	        }
	    });
	}

/***/ }),
/* 192 */
/***/ (function(module, exports, __webpack_require__) {

	module.exports = { "default": __webpack_require__(193), __esModule: true };

/***/ }),
/* 193 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(194);
	module.exports = __webpack_require__(46).Object.assign;

/***/ }),
/* 194 */
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.3.1 Object.assign(target, source)
	var $export = __webpack_require__(44);

	$export($export.S + $export.F, 'Object', {assign: __webpack_require__(195)});

/***/ }),
/* 195 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 19.1.2.1 Object.assign(target, source, ...)
	var getKeys  = __webpack_require__(196)
	  , gOPS     = __webpack_require__(211)
	  , pIE      = __webpack_require__(212)
	  , toObject = __webpack_require__(213)
	  , IObject  = __webpack_require__(200)
	  , $assign  = Object.assign;

	// should work with symbols and should have deterministic property order (V8 bug)
	module.exports = !$assign || __webpack_require__(55)(function(){
	  var A = {}
	    , B = {}
	    , S = Symbol()
	    , K = 'abcdefghijklmnopqrst';
	  A[S] = 7;
	  K.split('').forEach(function(k){ B[k] = k; });
	  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
	}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
	  var T     = toObject(target)
	    , aLen  = arguments.length
	    , index = 1
	    , getSymbols = gOPS.f
	    , isEnum     = pIE.f;
	  while(aLen > index){
	    var S      = IObject(arguments[index++])
	      , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
	      , length = keys.length
	      , j      = 0
	      , key;
	    while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
	  } return T;
	} : $assign;

/***/ }),
/* 196 */
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.14 / 15.2.3.14 Object.keys(O)
	var $keys       = __webpack_require__(197)
	  , enumBugKeys = __webpack_require__(210);

	module.exports = Object.keys || function keys(O){
	  return $keys(O, enumBugKeys);
	};

/***/ }),
/* 197 */
/***/ (function(module, exports, __webpack_require__) {

	var has          = __webpack_require__(198)
	  , toIObject    = __webpack_require__(199)
	  , arrayIndexOf = __webpack_require__(203)(false)
	  , IE_PROTO     = __webpack_require__(207)('IE_PROTO');

	module.exports = function(object, names){
	  var O      = toIObject(object)
	    , i      = 0
	    , result = []
	    , key;
	  for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
	  // Don't enum bug & hidden keys
	  while(names.length > i)if(has(O, key = names[i++])){
	    ~arrayIndexOf(result, key) || result.push(key);
	  }
	  return result;
	};

/***/ }),
/* 198 */
/***/ (function(module, exports) {

	var hasOwnProperty = {}.hasOwnProperty;
	module.exports = function(it, key){
	  return hasOwnProperty.call(it, key);
	};

/***/ }),
/* 199 */
/***/ (function(module, exports, __webpack_require__) {

	// to indexed object, toObject with fallback for non-array-like ES3 strings
	var IObject = __webpack_require__(200)
	  , defined = __webpack_require__(202);
	module.exports = function(it){
	  return IObject(defined(it));
	};

/***/ }),
/* 200 */
/***/ (function(module, exports, __webpack_require__) {

	// fallback for non-array-like ES3 and non-enumerable old V8 strings
	var cof = __webpack_require__(201);
	module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
	  return cof(it) == 'String' ? it.split('') : Object(it);
	};

/***/ }),
/* 201 */
/***/ (function(module, exports) {

	var toString = {}.toString;

	module.exports = function(it){
	  return toString.call(it).slice(8, -1);
	};

/***/ }),
/* 202 */
/***/ (function(module, exports) {

	// 7.2.1 RequireObjectCoercible(argument)
	module.exports = function(it){
	  if(it == undefined)throw TypeError("Can't call method on  " + it);
	  return it;
	};

/***/ }),
/* 203 */
/***/ (function(module, exports, __webpack_require__) {

	// false -> Array#indexOf
	// true  -> Array#includes
	var toIObject = __webpack_require__(199)
	  , toLength  = __webpack_require__(204)
	  , toIndex   = __webpack_require__(206);
	module.exports = function(IS_INCLUDES){
	  return function($this, el, fromIndex){
	    var O      = toIObject($this)
	      , length = toLength(O.length)
	      , index  = toIndex(fromIndex, length)
	      , value;
	    // Array#includes uses SameValueZero equality algorithm
	    if(IS_INCLUDES && el != el)while(length > index){
	      value = O[index++];
	      if(value != value)return true;
	    // Array#toIndex ignores holes, Array#includes - not
	    } else for(;length > index; index++)if(IS_INCLUDES || index in O){
	      if(O[index] === el)return IS_INCLUDES || index || 0;
	    } return !IS_INCLUDES && -1;
	  };
	};

/***/ }),
/* 204 */
/***/ (function(module, exports, __webpack_require__) {

	// 7.1.15 ToLength
	var toInteger = __webpack_require__(205)
	  , min       = Math.min;
	module.exports = function(it){
	  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
	};

/***/ }),
/* 205 */
/***/ (function(module, exports) {

	// 7.1.4 ToInteger
	var ceil  = Math.ceil
	  , floor = Math.floor;
	module.exports = function(it){
	  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
	};

/***/ }),
/* 206 */
/***/ (function(module, exports, __webpack_require__) {

	var toInteger = __webpack_require__(205)
	  , max       = Math.max
	  , min       = Math.min;
	module.exports = function(index, length){
	  index = toInteger(index);
	  return index < 0 ? max(index + length, 0) : min(index, length);
	};

/***/ }),
/* 207 */
/***/ (function(module, exports, __webpack_require__) {

	var shared = __webpack_require__(208)('keys')
	  , uid    = __webpack_require__(209);
	module.exports = function(key){
	  return shared[key] || (shared[key] = uid(key));
	};

/***/ }),
/* 208 */
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(45)
	  , SHARED = '__core-js_shared__'
	  , store  = global[SHARED] || (global[SHARED] = {});
	module.exports = function(key){
	  return store[key] || (store[key] = {});
	};

/***/ }),
/* 209 */
/***/ (function(module, exports) {

	var id = 0
	  , px = Math.random();
	module.exports = function(key){
	  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
	};

/***/ }),
/* 210 */
/***/ (function(module, exports) {

	// IE 8- don't enum bug keys
	module.exports = (
	  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
	).split(',');

/***/ }),
/* 211 */
/***/ (function(module, exports) {

	exports.f = Object.getOwnPropertySymbols;

/***/ }),
/* 212 */
/***/ (function(module, exports) {

	exports.f = {}.propertyIsEnumerable;

/***/ }),
/* 213 */
/***/ (function(module, exports, __webpack_require__) {

	// 7.1.13 ToObject(argument)
	var defined = __webpack_require__(202);
	module.exports = function(it){
	  return Object(defined(it));
	};

/***/ }),
/* 214 */
/***/ (function(module, exports, __webpack_require__) {

	var __vue_script__, __vue_template__
	var __vue_styles__ = {}
	__vue_script__ = __webpack_require__(215)
	if (Object.keys(__vue_script__).some(function (key) { return key !== "default" && key !== "__esModule" })) {
	  console.warn("[vue-loader] html\\dashboard\\vue\\api-editor-request-headers.vue: named exports in *.vue files are ignored.")}
	__vue_template__ = __webpack_require__(216)
	module.exports = __vue_script__ || {}
	if (module.exports.__esModule) module.exports = module.exports.default
	var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports
	if (__vue_template__) {
	__vue_options__.template = __vue_template__
	}
	if (!__vue_options__.computed) __vue_options__.computed = {}
	Object.keys(__vue_styles__).forEach(function (key) {
	var module = __vue_styles__[key]
	__vue_options__.computed[key] = function () { return module }
	})
	if (true) {(function () {  module.hot.accept()
	  var hotAPI = __webpack_require__(17)
	  hotAPI.install(__webpack_require__(1), false)
	  if (!hotAPI.compatible) return
	  var id = "_v-4c8ed619/api-editor-request-headers.vue"
	  if (!module.hot.data) {
	    hotAPI.createRecord(id, module.exports)
	  } else {
	    hotAPI.update(id, module.exports, __vue_template__)
	  }
	})()}

/***/ }),
/* 215 */
/***/ (function(module, exports) {

	'use strict';

	Object.defineProperty(exports, "__esModule", {
	    value: true
	});
	// <template>
	//     <div class="div-table-line" v-for="item in requestHeaders">
	//         <template v-if="editing">
	//         <ul class="cb">
	//             <li class="col-sm-1">
	//                 <i class="iconfont icon-close" v-on:click="removeRequestHeadersRow(item,requestHeaders)"></i>
	//             </li>
	//             <li class="col-sm-3 input"><input type="text" list="headerlist" class="text name" v-model="item.name" value="{{item.name}}"></li>
	//             <li class="col-sm-2"><select v-model="item.require">
	//                 <option value="true">true</option>
	//                 <option value="false">false</option>
	//             </select></li>
	//             <li class="col-sm-4 input"><input type="text" class="text" v-model="item.description" value="{{item.description}}"></li>
	//             <li class="col-sm-2 input"><input type="text" class="text" v-model="item.defaultValue" value="{{item.defaultValue}}"></li>
	//         </ul>
	//         </template>
	//         <template v-else>
	//         <ul class="cb">
	//             <li class="col-sm-2 name">
	//                 <template v-if="item.type &&( item.type=='object' || item.type.indexOf('array')!=-1)">
	//                     <i class="iconfont icon-my open" v-on:click="apiArgsColumnFold($event)"></i>
	//                 </template>
	//                 {{item.name}} </li>
	//             <li class="col-sm-1"> {{item.require || 'false' }} </li>
	//             <li class="col-sm-7"> {{item.description}} </li>
	//             <li class="col-sm-2"> {{item.defaultValue}} </li>
	//         </ul>
	//         </template>
	//
	//         <div class="sub">
	//             <request-headers-vue v-bind:request-headers.sync="item.children" v-bind:editing="editing"></request-headers-vue>
	//         </div>
	//     </div>
	// </template>
	// <script>
	exports.default = {
	    methods: {
	        removeRequestHeadersRow: function removeRequestHeadersRow(item, dom) {
	            dom.$remove(item);
	        },
	        insertRequestHeadersRow: function insertRequestHeadersRow(dom) {
	            dom.children.push({ require: 'true', type: 'string', children: [] });
	        },

	        apiArgsColumnFold: function apiArgsColumnFold(e) {
	            var $dom = $(e.target);
	            var $next = $(e.target).parent().parent().next();
	            if ($dom.hasClass('open')) {
	                $dom.removeClass('open');
	                $next.slideUp();
	            } else {
	                $dom.addClass('open');
	                $next.slideDown();
	            }
	        }
	    }
	};
	// </script>

/***/ }),
/* 216 */
/***/ (function(module, exports) {

	module.exports = "\n<div class=\"div-table-line\" v-for=\"item in requestHeaders\">\n    <template v-if=\"editing\">\n    <ul class=\"cb\">\n        <li class=\"col-sm-1\">\n            <i class=\"iconfont icon-close\" v-on:click=\"removeRequestHeadersRow(item,requestHeaders)\"></i>\n        </li>\n        <li class=\"col-sm-3 input\"><input type=\"text\" list=\"headerlist\" class=\"text name\" v-model=\"item.name\" value=\"{{item.name}}\"></li>\n        <li class=\"col-sm-2\"><select v-model=\"item.require\">\n            <option value=\"true\">true</option>\n            <option value=\"false\">false</option>\n        </select></li>\n        <li class=\"col-sm-4 input\"><input type=\"text\" class=\"text\" v-model=\"item.description\" value=\"{{item.description}}\"></li>\n        <li class=\"col-sm-2 input\"><input type=\"text\" class=\"text\" v-model=\"item.defaultValue\" value=\"{{item.defaultValue}}\"></li>\n    </ul>\n    </template>\n    <template v-else>\n    <ul class=\"cb\">\n        <li class=\"col-sm-2 name\">\n            <template v-if=\"item.type &&( item.type=='object' || item.type.indexOf('array')!=-1)\">\n                <i class=\"iconfont icon-my open\" v-on:click=\"apiArgsColumnFold($event)\"></i>\n            </template>\n            {{item.name}} </li>\n        <li class=\"col-sm-1\"> {{item.require || 'false' }} </li>\n        <li class=\"col-sm-7\"> {{item.description}} </li>\n        <li class=\"col-sm-2\"> {{item.defaultValue}} </li>\n    </ul>\n    </template>\n\n    <div class=\"sub\">\n        <request-headers-vue v-bind:request-headers.sync=\"item.children\" v-bind:editing=\"editing\"></request-headers-vue>\n    </div>\n</div>\n";

/***/ }),
/* 217 */
/***/ (function(module, exports, __webpack_require__) {

	var __vue_script__, __vue_template__
	var __vue_styles__ = {}
	__vue_script__ = __webpack_require__(218)
	if (Object.keys(__vue_script__).some(function (key) { return key !== "default" && key !== "__esModule" })) {
	  console.warn("[vue-loader] html\\dashboard\\vue\\api-editor-request-args.vue: named exports in *.vue files are ignored.")}
	__vue_template__ = __webpack_require__(219)
	module.exports = __vue_script__ || {}
	if (module.exports.__esModule) module.exports = module.exports.default
	var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports
	if (__vue_template__) {
	__vue_options__.template = __vue_template__
	}
	if (!__vue_options__.computed) __vue_options__.computed = {}
	Object.keys(__vue_styles__).forEach(function (key) {
	var module = __vue_styles__[key]
	__vue_options__.computed[key] = function () { return module }
	})
	if (true) {(function () {  module.hot.accept()
	  var hotAPI = __webpack_require__(17)
	  hotAPI.install(__webpack_require__(1), false)
	  if (!hotAPI.compatible) return
	  var id = "_v-fb9c804c/api-editor-request-args.vue"
	  if (!module.hot.data) {
	    hotAPI.createRecord(id, module.exports)
	  } else {
	    hotAPI.update(id, module.exports, __vue_template__)
	  }
	})()}

/***/ }),
/* 218 */
/***/ (function(module, exports) {

	'use strict';

	Object.defineProperty(exports, "__esModule", {
	    value: true
	});
	// <template>
	//     <div class="div-table-line" v-for="item in requestArgs">
	//         <template v-if="editing">
	//         <ul class="cb">
	//             <li class="col-sm-1">
	//                 <i class="iconfont icon-close" v-on:click="removeRequestArgsRow(item,requestArgs)"></i>
	//                 <i class="iconfont icon-tianjia" v-show="item.type && ( item.type.indexOf('object')!=-1) " v-on:click="insertRequestArgsRow(item,requestArgs.index+1)"></i>
	//             </li>
	//             <li class="col-sm-3 input">
	//                 <input type="text" list="requestlist" class="text name" v-model="item.name" value="{{item.name}}">
	//             </li>
	//             <li class="col-sm-2"><select v-model="item.require">
	//                 <option value="true">true</option>
	//                 <option value="false">false</option>
	//             </select></li>
	//             <li class="col-sm-2">
	//                 <select v-model="item.type">
	//                     <option value="string">string</option>
	//                     <option value="number">number</option>
	//                     <option value="Integer">Integer</option>
	//                     <option value="Double">Double</option>
	//                     <option value="boolean">boolean</option>
	//                     <option value="object">object</option>
	//                     <option value="array">array</option>
	//                     <option value="array[number]">array[number]</option>
	//                     <option value="array[Integer]">array[Integer]</option>
	//                     <option value="array[Double]">array[Double]</option>
	//                     <option value="array[boolean]">array[boolean]</option>
	//                     <option value="array[string]">array[string]</option>
	//                     <option value="array[object]">array[object]</option>
	//                     <option value="array[array]">array[array]</option>
	//                     <option value="file">file</option>
	//                 </select>
	//             </li>
	//             <li class="col-sm-2 input">
	//                 <input type="text" class="text" v-model="item.description" value="{{item.description}}">
	//             </li>
	//             <li class="col-sm-2 input"><input type="text" class="text" v-model="item.defaultValue" value="{{item.defaultValue}}"></li>
	//         </ul>
	//         </template>
	//         <template v-else>
	//             <ul class="cb">
	//                 <li class="col-sm-2 name">
	//                     <template v-if="item.type &&(item.type.indexOf('object')!=-1)">
	//                         <i class="iconfont icon-my open" v-on:click="apiArgsColumnFold($event)"></i>
	//                     </template>
	//                     {{item.name}} </li>
	//                 <li class="col-sm-1"> {{item.require || 'false'}} </li>
	//                 <li class="col-sm-1"> {{item.type}} </li>
	//                 <li class="col-sm-6"> {{item.description}} </li>
	//                 <li class="col-sm-2"> {{item.defaultValue}} </li>
	//             </ul>
	//         </template>
	//         <div class="sub">
	//             <request-args-vue v-bind:request-args="item.children" v-bind:editing="editing"></request-args-vue>
	//         </div>
	//     </div>
	// </template>
	// <script>
	exports.default = {
	    methods: {
	        removeRequestArgsRow: function removeRequestArgsRow(item, data) {
	            data.$remove(item);
	        },
	        insertRequestArgsRow: function insertRequestArgsRow(dom, index) {
	            //console.log(dom)
	            dom.children.index = index;
	            dom.children.push({ require: 'true', type: 'string', children: [] });
	        },

	        apiArgsColumnFold: function apiArgsColumnFold(e) {
	            var $dom = $(e.target);
	            var $next = $(e.target).parent().parent().next();
	            if ($dom.hasClass('open')) {
	                $dom.removeClass('open');
	                $next.slideUp();
	            } else {
	                $dom.addClass('open');
	                $next.slideDown();
	            }
	        }
	    }
	};
	// </script>

/***/ }),
/* 219 */
/***/ (function(module, exports) {

	module.exports = "\n<div class=\"div-table-line\" v-for=\"item in requestArgs\">\n    <template v-if=\"editing\">\n    <ul class=\"cb\">\n        <li class=\"col-sm-1\">\n            <i class=\"iconfont icon-close\" v-on:click=\"removeRequestArgsRow(item,requestArgs)\"></i>\n            <i class=\"iconfont icon-tianjia\" v-show=\"item.type && ( item.type.indexOf('object')!=-1) \" v-on:click=\"insertRequestArgsRow(item,requestArgs.index+1)\"></i>\n        </li>\n        <li class=\"col-sm-3 input\">\n            <input type=\"text\" list=\"requestlist\" class=\"text name\" v-model=\"item.name\" value=\"{{item.name}}\">\n        </li>\n        <li class=\"col-sm-2\"><select v-model=\"item.require\">\n            <option value=\"true\">true</option>\n            <option value=\"false\">false</option>\n        </select></li>\n        <li class=\"col-sm-2\">\n            <select v-model=\"item.type\">\n                <option value=\"string\">string</option>\n                <option value=\"number\">number</option>\n                <option value=\"Integer\">Integer</option>\n                <option value=\"Double\">Double</option>\n                <option value=\"boolean\">boolean</option>\n                <option value=\"object\">object</option>\n                <option value=\"array\">array</option>\n                <option value=\"array[number]\">array[number]</option>\n                <option value=\"array[Integer]\">array[Integer]</option>\n                <option value=\"array[Double]\">array[Double]</option>\n                <option value=\"array[boolean]\">array[boolean]</option>\n                <option value=\"array[string]\">array[string]</option>\n                <option value=\"array[object]\">array[object]</option>\n                <option value=\"array[array]\">array[array]</option>\n                <option value=\"file\">file</option>\n            </select>\n        </li>\n        <li class=\"col-sm-2 input\">\n            <input type=\"text\" class=\"text\" v-model=\"item.description\" value=\"{{item.description}}\">\n        </li>\n        <li class=\"col-sm-2 input\"><input type=\"text\" class=\"text\" v-model=\"item.defaultValue\" value=\"{{item.defaultValue}}\"></li>\n    </ul>\n    </template>\n    <template v-else>\n        <ul class=\"cb\">\n            <li class=\"col-sm-2 name\">\n                <template v-if=\"item.type &&(item.type.indexOf('object')!=-1)\">\n                    <i class=\"iconfont icon-my open\" v-on:click=\"apiArgsColumnFold($event)\"></i>\n                </template>\n                {{item.name}} </li>\n            <li class=\"col-sm-1\"> {{item.require || 'false'}} </li>\n            <li class=\"col-sm-1\"> {{item.type}} </li>\n            <li class=\"col-sm-6\"> {{item.description}} </li>\n            <li class=\"col-sm-2\"> {{item.defaultValue}} </li>\n        </ul>\n    </template>\n    <div class=\"sub\">\n        <request-args-vue v-bind:request-args=\"item.children\" v-bind:editing=\"editing\"></request-args-vue>\n    </div>\n</div>\n";

/***/ }),
/* 220 */
/***/ (function(module, exports, __webpack_require__) {

	var __vue_script__, __vue_template__
	var __vue_styles__ = {}
	__vue_script__ = __webpack_require__(221)
	if (Object.keys(__vue_script__).some(function (key) { return key !== "default" && key !== "__esModule" })) {
	  console.warn("[vue-loader] html\\dashboard\\vue\\api-editor-response-args.vue: named exports in *.vue files are ignored.")}
	__vue_template__ = __webpack_require__(222)
	module.exports = __vue_script__ || {}
	if (module.exports.__esModule) module.exports = module.exports.default
	var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports
	if (__vue_template__) {
	__vue_options__.template = __vue_template__
	}
	if (!__vue_options__.computed) __vue_options__.computed = {}
	Object.keys(__vue_styles__).forEach(function (key) {
	var module = __vue_styles__[key]
	__vue_options__.computed[key] = function () { return module }
	})
	if (true) {(function () {  module.hot.accept()
	  var hotAPI = __webpack_require__(17)
	  hotAPI.install(__webpack_require__(1), false)
	  if (!hotAPI.compatible) return
	  var id = "_v-4575b07a/api-editor-response-args.vue"
	  if (!module.hot.data) {
	    hotAPI.createRecord(id, module.exports)
	  } else {
	    hotAPI.update(id, module.exports, __vue_template__)
	  }
	})()}

/***/ }),
/* 221 */
/***/ (function(module, exports) {

	'use strict';

	Object.defineProperty(exports, "__esModule", {
	    value: true
	});
	// <template>
	//     <div class="div-table-line" v-for="item in responseArgs">
	//         <template v-if="editing">
	//         <ul class="cb">
	//             <li class="col-sm-1">
	//                 <i class="iconfont icon-close" v-on:click="removeResponseArgsRow(item,responseArgs)"></i>
	//                 <i class="iconfont icon-tianjia" v-show="item.type &&( item.type.indexOf('object')!=-1) " v-on:click="insertResponseArgsRow(item)"></i>
	//             </li>
	//             <li class="col-sm-3 input"><input type="text" list="responselist" class="text name" v-model="item.name" value="{{item.name}}"></li>
	//             <li class="col-sm-2"><select v-model="item.require">
	//                 <option value="true">true</option>
	//                 <option value="false">false</option>
	//             </select></li>
	//             <li class="col-sm-2">
	//                 <select v-model="item.type">
	// 					<option value="string">string</option>
	//                     <option value="number">number</option>
	//                     <option value="Integer">Integer</option>
	//                     <option value="Double">Double</option>
	//                     <option value="boolean">boolean</option>
	//                     <option value="object">object</option>
	//                     <option value="array">array</option>
	//                     <option value="array[number]">array[number]</option>
	//                     <option value="array[Integer]">array[Integer]</option>
	//                     <option value="array[Double]">array[Double]</option>
	//                     <option value="array[boolean]">array[boolean]</option>
	//                     <option value="array[string]">array[string]</option>
	//                     <option value="array[object]">array[object]</option>
	//                     <option value="array[array]">array[array]</option>
	//                 </select>
	//             </li>
	//             <li class="col-sm-4 input"><input type="text" class="text" v-model="item.description" value="{{item.description}}"></li>
	//         </ul>
	//         </template>
	//         <template v-else>
	//         <ul class="cb">
	//             <li class="col-sm-2 name">
	//                 <template v-if="item.type &&(item.type.indexOf('object')!=-1)">
	//                     <i class="iconfont icon-my open" v-on:click="apiArgsColumnFold($event)"></i>
	//                 </template>
	//                 {{item.name}} </li>
	//             <li class="col-sm-1"> {{item.require || 'false'}} </li>
	//             <li class="col-sm-2"> {{item.type}} </li>
	//             <li class="col-sm-7"> {{item.description}} </li>
	//         </ul>
	//         </template>
	//
	//         <div class="sub">
	//             <response-args-vue v-bind:response-args="item.children" v-bind:editing="editing"></response-args-vue>
	//         </div>
	//     </div>
	// </template>
	// <script>
	exports.default = {
	    methods: {
	        removeResponseArgsRow: function removeResponseArgsRow(item, data) {
	            data.$remove(item);
	        },
	        insertResponseArgsRow: function insertResponseArgsRow(data) {
	            data.children.push({ require: 'true', children: [], type: "string" });
	        },
	        apiArgsColumnFold: function apiArgsColumnFold(e) {
	            var $dom = $(e.target);
	            var $next = $(e.target).parent().parent().next();
	            if ($dom.hasClass('open')) {
	                $dom.removeClass('open');
	                $next.slideUp();
	            } else {
	                $dom.addClass('open');
	                $next.slideDown();
	            }
	        }
	    }
	};
	// </script>

/***/ }),
/* 222 */
/***/ (function(module, exports) {

	module.exports = "\n    <div class=\"div-table-line\" v-for=\"item in responseArgs\">\n        <template v-if=\"editing\">\n        <ul class=\"cb\">\n            <li class=\"col-sm-1\">\n                <i class=\"iconfont icon-close\" v-on:click=\"removeResponseArgsRow(item,responseArgs)\"></i>\n                <i class=\"iconfont icon-tianjia\" v-show=\"item.type &&( item.type.indexOf('object')!=-1) \" v-on:click=\"insertResponseArgsRow(item)\"></i>\n            </li>\n            <li class=\"col-sm-3 input\"><input type=\"text\" list=\"responselist\" class=\"text name\" v-model=\"item.name\" value=\"{{item.name}}\"></li>\n            <li class=\"col-sm-2\"><select v-model=\"item.require\">\n                <option value=\"true\">true</option>\n                <option value=\"false\">false</option>\n            </select></li>\n            <li class=\"col-sm-2\">\n                <select v-model=\"item.type\">\n\t\t\t\t\t<option value=\"string\">string</option>\n                    <option value=\"number\">number</option>\n                    <option value=\"Integer\">Integer</option>\n                    <option value=\"Double\">Double</option>\n                    <option value=\"boolean\">boolean</option>\n                    <option value=\"object\">object</option>\n                    <option value=\"array\">array</option>\n                    <option value=\"array[number]\">array[number]</option>\n                    <option value=\"array[Integer]\">array[Integer]</option>\n                    <option value=\"array[Double]\">array[Double]</option>\n                    <option value=\"array[boolean]\">array[boolean]</option>\n                    <option value=\"array[string]\">array[string]</option>\n                    <option value=\"array[object]\">array[object]</option>\n                    <option value=\"array[array]\">array[array]</option>\n                </select>\n            </li>\n            <li class=\"col-sm-4 input\"><input type=\"text\" class=\"text\" v-model=\"item.description\" value=\"{{item.description}}\"></li>\n        </ul>\n        </template>\n        <template v-else>\n        <ul class=\"cb\">\n            <li class=\"col-sm-2 name\">\n                <template v-if=\"item.type &&(item.type.indexOf('object')!=-1)\">\n                    <i class=\"iconfont icon-my open\" v-on:click=\"apiArgsColumnFold($event)\"></i>\n                </template>\n                {{item.name}} </li>\n            <li class=\"col-sm-1\"> {{item.require || 'false'}} </li>\n            <li class=\"col-sm-2\"> {{item.type}} </li>\n            <li class=\"col-sm-7\"> {{item.description}} </li>\n        </ul>\n        </template>\n\n        <div class=\"sub\">\n            <response-args-vue v-bind:response-args=\"item.children\" v-bind:editing=\"editing\"></response-args-vue>\n        </div>\n    </div>\n";

/***/ }),
/* 223 */
/***/ (function(module, exports, __webpack_require__) {

	"use strict";

	var _typeof2 = __webpack_require__(224);

	var _typeof3 = _interopRequireDefault(_typeof2);

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

	function JsonFormater(opt) {
	    this.options = $.extend({
	        dom: '',
	        tabSize: 2,
	        singleTab: "  ",
	        quoteKeys: true,
	        imgCollapsed: "images/Collapsed.gif",
	        imgExpanded: "images/Expanded.gif",
	        isCollapsible: true
	    }, opt || {});
	    this.isFormated = false;
	    this.obj = {
	        _dateObj: new Date(),
	        _regexpObj: new RegExp()
	    };
	    this.init();
	}
	window.JsonFormater = JsonFormater;
	JsonFormater.prototype = {
	    init: function init() {
	        this.tab = this.multiplyString(this.options.tabSize, this.options.singleTab);
	        this.bindEvent();
	    },
	    doFormat: function doFormat(json) {
	        var html;
	        var obj;
	        try {
	            if ((typeof json === "undefined" ? "undefined" : (0, _typeof3.default)(json)) == 'object') {
	                obj = [json];
	            } else {
	                if (json == "") {
	                    json = "\"\"";
	                }
	                obj = eval("[" + json + "]");
	            }
	            html = this.ProcessObject(obj[0], 0, false, false, false);
	            //$(this.options.dom).html();
	            this.isFormated = true;
	            //return "<pre class='jf-CodeContainer'>" + html + "</pre>";
	            return html;
	        } catch (e) {
	            this.isFormated = false;
	            throw e;
	        }
	    },
	    bindEvent: function bindEvent() {
	        var that = this;
	        $(this.options.dom).off('click', '.imgToggle');
	        $(this.options.dom).on('click', '.imgToggle', function () {
	            if (that.isFormated == false) {
	                return;
	            }
	            that.makeContentVisible($(this).parent().next(), !$(this).data('status'));
	        });
	    },
	    expandAll: function expandAll() {
	        if (this.isFormated == false) {
	            return;
	        }
	        var that = this;
	        this.traverseChildren($(this.options.dom), function (element) {
	            if (element.hasClass('jf-collapsible')) {
	                that.makeContentVisible(element, true);
	            }
	        }, 0);
	    },
	    collapseAll: function collapseAll() {
	        if (this.isFormated == false) {
	            return;
	        }
	        var that = this;
	        this.traverseChildren($(this.options.dom), function (element) {
	            if (element.hasClass('jf-collapsible')) {
	                that.makeContentVisible(element, false);
	            }
	        }, 0);
	    },
	    collapseLevel: function collapseLevel(level) {
	        if (this.isFormated == false) {
	            return;
	        }
	        var that = this;
	        this.traverseChildren($(this.options.dom), function (element, depth) {
	            if (element.hasClass('jf-collapsible')) {
	                if (depth >= level) {
	                    that.makeContentVisible(element, false);
	                } else {
	                    that.makeContentVisible(element, true);
	                }
	            }
	        }, 0);
	    },
	    isArray: function isArray(obj) {
	        return obj && (typeof obj === "undefined" ? "undefined" : (0, _typeof3.default)(obj)) === 'object' && typeof obj.length === 'number' && !obj.propertyIsEnumerable('length');
	    },
	    getRow: function getRow(indent, data, isPropertyContent) {
	        var tabs = "";
	        if (!isPropertyContent) {
	            tabs = this.multiplyString(indent, this.tab);
	        }
	        if (data != null && data.length > 0 && data.charAt(data.length - 1) != "\n") {
	            data = data + "\n";
	        }
	        return tabs + data;
	    },
	    formatLiteral: function formatLiteral(literal, quote, comma, indent, isArray, style) {
	        if (typeof literal == 'string') {
	            literal = literal.split("<").join("&lt;").split(">").join("&gt;");
	        }
	        var str = "<span class='jf-" + style + "'>" + quote + literal + quote + comma + "</span>";
	        if (isArray) str = this.getRow(indent, str);
	        return str;
	    },
	    formatFunction: function formatFunction(indent, obj) {
	        var tabs;
	        var i;
	        var funcStrArray = obj.toString().split("\n");
	        var str = "";
	        tabs = this.multiplyString(indent, this.tab);
	        for (i = 0; i < funcStrArray.length; i++) {
	            str += (i == 0 ? "" : tabs) + funcStrArray[i] + "\n";
	        }
	        return str;
	    },
	    multiplyString: function multiplyString(num, str) {
	        var result = '';
	        for (var i = 0; i < num; i++) {
	            result += str;
	        }
	        return result;
	    },
	    traverseChildren: function traverseChildren(element, func, depth) {
	        var length = element.children().length;
	        for (var i = 0; i < length; i++) {
	            this.traverseChildren(element.children().eq(i), func, depth + 1);
	        }
	        func(element, depth);
	    },
	    makeContentVisible: function makeContentVisible(element, visible) {
	        var img = element.prev().find('img');
	        if (visible) {
	            element.show();
	            img.attr('src', this.options.imgExpanded);
	            img.data('status', 1);
	        } else {
	            element.hide();
	            img.attr('src', this.options.imgCollapsed);
	            img.data('status', 0);
	        }
	    },
	    ProcessObject: function ProcessObject(obj, indent, addComma, isArray, isPropertyContent) {
	        var html = "";
	        var comma = addComma ? "<span class='jf-Comma'>,</span> " : "";
	        var type = typeof obj === "undefined" ? "undefined" : (0, _typeof3.default)(obj);
	        var clpsHtml = "";
	        var prop;
	        if (this.isArray(obj)) {
	            if (obj.length == 0) {
	                html += this.getRow(indent, "<span class='jf-ArrayBrace'>[ ]</span>" + comma, isPropertyContent);
	            } else {
	                clpsHtml = this.options.isCollapsible ? "<span><img class='imgToggle' data-status='1' src='" + this.options.imgExpanded + "'/></span><span class='jf-collapsible'>" : "";
	                html += this.getRow(indent, "<span class='jf-ArrayBrace'>[</span>" + clpsHtml, isPropertyContent);
	                for (var i = 0; i < obj.length; i++) {
	                    html += this.ProcessObject(obj[i], indent + 1, i < obj.length - 1, true, false);
	                }
	                clpsHtml = this.options.isCollapsible ? "</span>" : "";
	                html += this.getRow(indent, clpsHtml + "<span class='jf-ArrayBrace'>]</span>" + comma);
	            }
	        } else if (type == 'object') {
	            if (obj == null) {
	                html += this.formatLiteral("null", "", comma, indent, isArray, "Null");
	            } else {
	                var numProps = 0;
	                for (prop in obj) {
	                    numProps++;
	                }if (numProps == 0) {
	                    html += this.getRow(indent, "<span class='jf-ObjectBrace'>{ }</span>" + comma, isPropertyContent);
	                } else {
	                    clpsHtml = this.options.isCollapsible ? "<span><img class='imgToggle' data-status='1' src='" + this.options.imgExpanded + "'/></span><span class='jf-collapsible'>" : "";
	                    html += this.getRow(indent, "<span class='jf-ObjectBrace'>{</span>" + clpsHtml, isPropertyContent);
	                    var j = 0;
	                    for (prop in obj) {
	                        var quote = this.options.quoteKeys ? "\"" : "";
	                        html += this.getRow(indent + 1, "<span class='jf-PropertyName'>" + quote + prop + quote + "</span>: " + this.ProcessObject(obj[prop], indent + 1, ++j < numProps, false, true));
	                    }
	                    clpsHtml = this.options.isCollapsible ? "</span>" : "";
	                    html += this.getRow(indent, clpsHtml + "<span class='jf-ObjectBrace'>}</span>" + comma);
	                }
	            }
	        } else if (type == 'number') {
	            html += this.formatLiteral(obj, "", comma, indent, isArray, "Number");
	        } else if (type == 'boolean') {
	            html += this.formatLiteral(obj, "", comma, indent, isArray, "Boolean");
	        } else if (type == 'undefined') {
	            html += this.formatLiteral("undefined", "", comma, indent, isArray, "Null");
	        } else {
	            html += this.formatLiteral(obj.toString().split("\\").join("\\\\").split('"').join('\\"'), "\"", comma, indent, isArray, "String");
	        }
	        return html;
	    }
	};

/***/ }),
/* 224 */
/***/ (function(module, exports, __webpack_require__) {

	"use strict";

	exports.__esModule = true;

	var _iterator = __webpack_require__(225);

	var _iterator2 = _interopRequireDefault(_iterator);

	var _symbol = __webpack_require__(245);

	var _symbol2 = _interopRequireDefault(_symbol);

	var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

	exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
	  return typeof obj === "undefined" ? "undefined" : _typeof(obj);
	} : function (obj) {
	  return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
	};

/***/ }),
/* 225 */
/***/ (function(module, exports, __webpack_require__) {

	module.exports = { "default": __webpack_require__(226), __esModule: true };

/***/ }),
/* 226 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(227);
	__webpack_require__(240);
	module.exports = __webpack_require__(244).f('iterator');

/***/ }),
/* 227 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $at  = __webpack_require__(228)(true);

	// 21.1.3.27 String.prototype[@@iterator]()
	__webpack_require__(229)(String, 'String', function(iterated){
	  this._t = String(iterated); // target
	  this._i = 0;                // next index
	// 21.1.5.2.1 %StringIteratorPrototype%.next()
	}, function(){
	  var O     = this._t
	    , index = this._i
	    , point;
	  if(index >= O.length)return {value: undefined, done: true};
	  point = $at(O, index);
	  this._i += point.length;
	  return {value: point, done: false};
	});

/***/ }),
/* 228 */
/***/ (function(module, exports, __webpack_require__) {

	var toInteger = __webpack_require__(205)
	  , defined   = __webpack_require__(202);
	// true  -> String#at
	// false -> String#codePointAt
	module.exports = function(TO_STRING){
	  return function(that, pos){
	    var s = String(defined(that))
	      , i = toInteger(pos)
	      , l = s.length
	      , a, b;
	    if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
	    a = s.charCodeAt(i);
	    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
	      ? TO_STRING ? s.charAt(i) : a
	      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
	  };
	};

/***/ }),
/* 229 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var LIBRARY        = __webpack_require__(230)
	  , $export        = __webpack_require__(44)
	  , redefine       = __webpack_require__(231)
	  , hide           = __webpack_require__(49)
	  , has            = __webpack_require__(198)
	  , Iterators      = __webpack_require__(232)
	  , $iterCreate    = __webpack_require__(233)
	  , setToStringTag = __webpack_require__(237)
	  , getPrototypeOf = __webpack_require__(239)
	  , ITERATOR       = __webpack_require__(238)('iterator')
	  , BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
	  , FF_ITERATOR    = '@@iterator'
	  , KEYS           = 'keys'
	  , VALUES         = 'values';

	var returnThis = function(){ return this; };

	module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
	  $iterCreate(Constructor, NAME, next);
	  var getMethod = function(kind){
	    if(!BUGGY && kind in proto)return proto[kind];
	    switch(kind){
	      case KEYS: return function keys(){ return new Constructor(this, kind); };
	      case VALUES: return function values(){ return new Constructor(this, kind); };
	    } return function entries(){ return new Constructor(this, kind); };
	  };
	  var TAG        = NAME + ' Iterator'
	    , DEF_VALUES = DEFAULT == VALUES
	    , VALUES_BUG = false
	    , proto      = Base.prototype
	    , $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
	    , $default   = $native || getMethod(DEFAULT)
	    , $entries   = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
	    , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
	    , methods, key, IteratorPrototype;
	  // Fix native
	  if($anyNative){
	    IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
	    if(IteratorPrototype !== Object.prototype){
	      // Set @@toStringTag to native iterators
	      setToStringTag(IteratorPrototype, TAG, true);
	      // fix for some old engines
	      if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
	    }
	  }
	  // fix Array#{values, @@iterator}.name in V8 / FF
	  if(DEF_VALUES && $native && $native.name !== VALUES){
	    VALUES_BUG = true;
	    $default = function values(){ return $native.call(this); };
	  }
	  // Define iterator
	  if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
	    hide(proto, ITERATOR, $default);
	  }
	  // Plug for library
	  Iterators[NAME] = $default;
	  Iterators[TAG]  = returnThis;
	  if(DEFAULT){
	    methods = {
	      values:  DEF_VALUES ? $default : getMethod(VALUES),
	      keys:    IS_SET     ? $default : getMethod(KEYS),
	      entries: $entries
	    };
	    if(FORCED)for(key in methods){
	      if(!(key in proto))redefine(proto, key, methods[key]);
	    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
	  }
	  return methods;
	};

/***/ }),
/* 230 */
/***/ (function(module, exports) {

	module.exports = true;

/***/ }),
/* 231 */
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(49);

/***/ }),
/* 232 */
/***/ (function(module, exports) {

	module.exports = {};

/***/ }),
/* 233 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var create         = __webpack_require__(234)
	  , descriptor     = __webpack_require__(58)
	  , setToStringTag = __webpack_require__(237)
	  , IteratorPrototype = {};

	// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
	__webpack_require__(49)(IteratorPrototype, __webpack_require__(238)('iterator'), function(){ return this; });

	module.exports = function(Constructor, NAME, next){
	  Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
	  setToStringTag(Constructor, NAME + ' Iterator');
	};

/***/ }),
/* 234 */
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
	var anObject    = __webpack_require__(51)
	  , dPs         = __webpack_require__(235)
	  , enumBugKeys = __webpack_require__(210)
	  , IE_PROTO    = __webpack_require__(207)('IE_PROTO')
	  , Empty       = function(){ /* empty */ }
	  , PROTOTYPE   = 'prototype';

	// Create object with fake `null` prototype: use iframe Object with cleared prototype
	var createDict = function(){
	  // Thrash, waste and sodomy: IE GC bug
	  var iframe = __webpack_require__(56)('iframe')
	    , i      = enumBugKeys.length
	    , lt     = '<'
	    , gt     = '>'
	    , iframeDocument;
	  iframe.style.display = 'none';
	  __webpack_require__(236).appendChild(iframe);
	  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
	  // createDict = iframe.contentWindow.Object;
	  // html.removeChild(iframe);
	  iframeDocument = iframe.contentWindow.document;
	  iframeDocument.open();
	  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
	  iframeDocument.close();
	  createDict = iframeDocument.F;
	  while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
	  return createDict();
	};

	module.exports = Object.create || function create(O, Properties){
	  var result;
	  if(O !== null){
	    Empty[PROTOTYPE] = anObject(O);
	    result = new Empty;
	    Empty[PROTOTYPE] = null;
	    // add "__proto__" for Object.getPrototypeOf polyfill
	    result[IE_PROTO] = O;
	  } else result = createDict();
	  return Properties === undefined ? result : dPs(result, Properties);
	};


/***/ }),
/* 235 */
/***/ (function(module, exports, __webpack_require__) {

	var dP       = __webpack_require__(50)
	  , anObject = __webpack_require__(51)
	  , getKeys  = __webpack_require__(196);

	module.exports = __webpack_require__(54) ? Object.defineProperties : function defineProperties(O, Properties){
	  anObject(O);
	  var keys   = getKeys(Properties)
	    , length = keys.length
	    , i = 0
	    , P;
	  while(length > i)dP.f(O, P = keys[i++], Properties[P]);
	  return O;
	};

/***/ }),
/* 236 */
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(45).document && document.documentElement;

/***/ }),
/* 237 */
/***/ (function(module, exports, __webpack_require__) {

	var def = __webpack_require__(50).f
	  , has = __webpack_require__(198)
	  , TAG = __webpack_require__(238)('toStringTag');

	module.exports = function(it, tag, stat){
	  if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
	};

/***/ }),
/* 238 */
/***/ (function(module, exports, __webpack_require__) {

	var store      = __webpack_require__(208)('wks')
	  , uid        = __webpack_require__(209)
	  , Symbol     = __webpack_require__(45).Symbol
	  , USE_SYMBOL = typeof Symbol == 'function';

	var $exports = module.exports = function(name){
	  return store[name] || (store[name] =
	    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
	};

	$exports.store = store;

/***/ }),
/* 239 */
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
	var has         = __webpack_require__(198)
	  , toObject    = __webpack_require__(213)
	  , IE_PROTO    = __webpack_require__(207)('IE_PROTO')
	  , ObjectProto = Object.prototype;

	module.exports = Object.getPrototypeOf || function(O){
	  O = toObject(O);
	  if(has(O, IE_PROTO))return O[IE_PROTO];
	  if(typeof O.constructor == 'function' && O instanceof O.constructor){
	    return O.constructor.prototype;
	  } return O instanceof Object ? ObjectProto : null;
	};

/***/ }),
/* 240 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(241);
	var global        = __webpack_require__(45)
	  , hide          = __webpack_require__(49)
	  , Iterators     = __webpack_require__(232)
	  , TO_STRING_TAG = __webpack_require__(238)('toStringTag');

	for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
	  var NAME       = collections[i]
	    , Collection = global[NAME]
	    , proto      = Collection && Collection.prototype;
	  if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
	  Iterators[NAME] = Iterators.Array;
	}

/***/ }),
/* 241 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var addToUnscopables = __webpack_require__(242)
	  , step             = __webpack_require__(243)
	  , Iterators        = __webpack_require__(232)
	  , toIObject        = __webpack_require__(199);

	// 22.1.3.4 Array.prototype.entries()
	// 22.1.3.13 Array.prototype.keys()
	// 22.1.3.29 Array.prototype.values()
	// 22.1.3.30 Array.prototype[@@iterator]()
	module.exports = __webpack_require__(229)(Array, 'Array', function(iterated, kind){
	  this._t = toIObject(iterated); // target
	  this._i = 0;                   // next index
	  this._k = kind;                // kind
	// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
	}, function(){
	  var O     = this._t
	    , kind  = this._k
	    , index = this._i++;
	  if(!O || index >= O.length){
	    this._t = undefined;
	    return step(1);
	  }
	  if(kind == 'keys'  )return step(0, index);
	  if(kind == 'values')return step(0, O[index]);
	  return step(0, [index, O[index]]);
	}, 'values');

	// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
	Iterators.Arguments = Iterators.Array;

	addToUnscopables('keys');
	addToUnscopables('values');
	addToUnscopables('entries');

/***/ }),
/* 242 */
/***/ (function(module, exports) {

	module.exports = function(){ /* empty */ };

/***/ }),
/* 243 */
/***/ (function(module, exports) {

	module.exports = function(done, value){
	  return {value: value, done: !!done};
	};

/***/ }),
/* 244 */
/***/ (function(module, exports, __webpack_require__) {

	exports.f = __webpack_require__(238);

/***/ }),
/* 245 */
/***/ (function(module, exports, __webpack_require__) {

	module.exports = { "default": __webpack_require__(246), __esModule: true };

/***/ }),
/* 246 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(247);
	__webpack_require__(256);
	__webpack_require__(257);
	__webpack_require__(258);
	module.exports = __webpack_require__(46).Symbol;

/***/ }),
/* 247 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// ECMAScript 6 symbols shim
	var global         = __webpack_require__(45)
	  , has            = __webpack_require__(198)
	  , DESCRIPTORS    = __webpack_require__(54)
	  , $export        = __webpack_require__(44)
	  , redefine       = __webpack_require__(231)
	  , META           = __webpack_require__(248).KEY
	  , $fails         = __webpack_require__(55)
	  , shared         = __webpack_require__(208)
	  , setToStringTag = __webpack_require__(237)
	  , uid            = __webpack_require__(209)
	  , wks            = __webpack_require__(238)
	  , wksExt         = __webpack_require__(244)
	  , wksDefine      = __webpack_require__(249)
	  , keyOf          = __webpack_require__(250)
	  , enumKeys       = __webpack_require__(251)
	  , isArray        = __webpack_require__(252)
	  , anObject       = __webpack_require__(51)
	  , toIObject      = __webpack_require__(199)
	  , toPrimitive    = __webpack_require__(57)
	  , createDesc     = __webpack_require__(58)
	  , _create        = __webpack_require__(234)
	  , gOPNExt        = __webpack_require__(253)
	  , $GOPD          = __webpack_require__(255)
	  , $DP            = __webpack_require__(50)
	  , $keys          = __webpack_require__(196)
	  , gOPD           = $GOPD.f
	  , dP             = $DP.f
	  , gOPN           = gOPNExt.f
	  , $Symbol        = global.Symbol
	  , $JSON          = global.JSON
	  , _stringify     = $JSON && $JSON.stringify
	  , PROTOTYPE      = 'prototype'
	  , HIDDEN         = wks('_hidden')
	  , TO_PRIMITIVE   = wks('toPrimitive')
	  , isEnum         = {}.propertyIsEnumerable
	  , SymbolRegistry = shared('symbol-registry')
	  , AllSymbols     = shared('symbols')
	  , OPSymbols      = shared('op-symbols')
	  , ObjectProto    = Object[PROTOTYPE]
	  , USE_NATIVE     = typeof $Symbol == 'function'
	  , QObject        = global.QObject;
	// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
	var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

	// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
	var setSymbolDesc = DESCRIPTORS && $fails(function(){
	  return _create(dP({}, 'a', {
	    get: function(){ return dP(this, 'a', {value: 7}).a; }
	  })).a != 7;
	}) ? function(it, key, D){
	  var protoDesc = gOPD(ObjectProto, key);
	  if(protoDesc)delete ObjectProto[key];
	  dP(it, key, D);
	  if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
	} : dP;

	var wrap = function(tag){
	  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
	  sym._k = tag;
	  return sym;
	};

	var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
	  return typeof it == 'symbol';
	} : function(it){
	  return it instanceof $Symbol;
	};

	var $defineProperty = function defineProperty(it, key, D){
	  if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
	  anObject(it);
	  key = toPrimitive(key, true);
	  anObject(D);
	  if(has(AllSymbols, key)){
	    if(!D.enumerable){
	      if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
	      it[HIDDEN][key] = true;
	    } else {
	      if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
	      D = _create(D, {enumerable: createDesc(0, false)});
	    } return setSymbolDesc(it, key, D);
	  } return dP(it, key, D);
	};
	var $defineProperties = function defineProperties(it, P){
	  anObject(it);
	  var keys = enumKeys(P = toIObject(P))
	    , i    = 0
	    , l = keys.length
	    , key;
	  while(l > i)$defineProperty(it, key = keys[i++], P[key]);
	  return it;
	};
	var $create = function create(it, P){
	  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
	};
	var $propertyIsEnumerable = function propertyIsEnumerable(key){
	  var E = isEnum.call(this, key = toPrimitive(key, true));
	  if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
	  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
	};
	var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
	  it  = toIObject(it);
	  key = toPrimitive(key, true);
	  if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
	  var D = gOPD(it, key);
	  if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
	  return D;
	};
	var $getOwnPropertyNames = function getOwnPropertyNames(it){
	  var names  = gOPN(toIObject(it))
	    , result = []
	    , i      = 0
	    , key;
	  while(names.length > i){
	    if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
	  } return result;
	};
	var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
	  var IS_OP  = it === ObjectProto
	    , names  = gOPN(IS_OP ? OPSymbols : toIObject(it))
	    , result = []
	    , i      = 0
	    , key;
	  while(names.length > i){
	    if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
	  } return result;
	};

	// 19.4.1.1 Symbol([description])
	if(!USE_NATIVE){
	  $Symbol = function Symbol(){
	    if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
	    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
	    var $set = function(value){
	      if(this === ObjectProto)$set.call(OPSymbols, value);
	      if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
	      setSymbolDesc(this, tag, createDesc(1, value));
	    };
	    if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
	    return wrap(tag);
	  };
	  redefine($Symbol[PROTOTYPE], 'toString', function toString(){
	    return this._k;
	  });

	  $GOPD.f = $getOwnPropertyDescriptor;
	  $DP.f   = $defineProperty;
	  __webpack_require__(254).f = gOPNExt.f = $getOwnPropertyNames;
	  __webpack_require__(212).f  = $propertyIsEnumerable;
	  __webpack_require__(211).f = $getOwnPropertySymbols;

	  if(DESCRIPTORS && !__webpack_require__(230)){
	    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
	  }

	  wksExt.f = function(name){
	    return wrap(wks(name));
	  }
	}

	$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});

	for(var symbols = (
	  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
	  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
	).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);

	for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);

	$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
	  // 19.4.2.1 Symbol.for(key)
	  'for': function(key){
	    return has(SymbolRegistry, key += '')
	      ? SymbolRegistry[key]
	      : SymbolRegistry[key] = $Symbol(key);
	  },
	  // 19.4.2.5 Symbol.keyFor(sym)
	  keyFor: function keyFor(key){
	    if(isSymbol(key))return keyOf(SymbolRegistry, key);
	    throw TypeError(key + ' is not a symbol!');
	  },
	  useSetter: function(){ setter = true; },
	  useSimple: function(){ setter = false; }
	});

	$export($export.S + $export.F * !USE_NATIVE, 'Object', {
	  // 19.1.2.2 Object.create(O [, Properties])
	  create: $create,
	  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
	  defineProperty: $defineProperty,
	  // 19.1.2.3 Object.defineProperties(O, Properties)
	  defineProperties: $defineProperties,
	  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
	  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
	  // 19.1.2.7 Object.getOwnPropertyNames(O)
	  getOwnPropertyNames: $getOwnPropertyNames,
	  // 19.1.2.8 Object.getOwnPropertySymbols(O)
	  getOwnPropertySymbols: $getOwnPropertySymbols
	});

	// 24.3.2 JSON.stringify(value [, replacer [, space]])
	$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
	  var S = $Symbol();
	  // MS Edge converts symbol values to JSON as {}
	  // WebKit converts symbol values to JSON as null
	  // V8 throws on boxed symbols
	  return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
	})), 'JSON', {
	  stringify: function stringify(it){
	    if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
	    var args = [it]
	      , i    = 1
	      , replacer, $replacer;
	    while(arguments.length > i)args.push(arguments[i++]);
	    replacer = args[1];
	    if(typeof replacer == 'function')$replacer = replacer;
	    if($replacer || !isArray(replacer))replacer = function(key, value){
	      if($replacer)value = $replacer.call(this, key, value);
	      if(!isSymbol(value))return value;
	    };
	    args[1] = replacer;
	    return _stringify.apply($JSON, args);
	  }
	});

	// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
	$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(49)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
	// 19.4.3.5 Symbol.prototype[@@toStringTag]
	setToStringTag($Symbol, 'Symbol');
	// 20.2.1.9 Math[@@toStringTag]
	setToStringTag(Math, 'Math', true);
	// 24.3.3 JSON[@@toStringTag]
	setToStringTag(global.JSON, 'JSON', true);

/***/ }),
/* 248 */
/***/ (function(module, exports, __webpack_require__) {

	var META     = __webpack_require__(209)('meta')
	  , isObject = __webpack_require__(52)
	  , has      = __webpack_require__(198)
	  , setDesc  = __webpack_require__(50).f
	  , id       = 0;
	var isExtensible = Object.isExtensible || function(){
	  return true;
	};
	var FREEZE = !__webpack_require__(55)(function(){
	  return isExtensible(Object.preventExtensions({}));
	});
	var setMeta = function(it){
	  setDesc(it, META, {value: {
	    i: 'O' + ++id, // object ID
	    w: {}          // weak collections IDs
	  }});
	};
	var fastKey = function(it, create){
	  // return primitive with prefix
	  if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
	  if(!has(it, META)){
	    // can't set metadata to uncaught frozen object
	    if(!isExtensible(it))return 'F';
	    // not necessary to add metadata
	    if(!create)return 'E';
	    // add missing metadata
	    setMeta(it);
	  // return object ID
	  } return it[META].i;
	};
	var getWeak = function(it, create){
	  if(!has(it, META)){
	    // can't set metadata to uncaught frozen object
	    if(!isExtensible(it))return true;
	    // not necessary to add metadata
	    if(!create)return false;
	    // add missing metadata
	    setMeta(it);
	  // return hash weak collections IDs
	  } return it[META].w;
	};
	// add metadata on freeze-family methods calling
	var onFreeze = function(it){
	  if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
	  return it;
	};
	var meta = module.exports = {
	  KEY:      META,
	  NEED:     false,
	  fastKey:  fastKey,
	  getWeak:  getWeak,
	  onFreeze: onFreeze
	};

/***/ }),
/* 249 */
/***/ (function(module, exports, __webpack_require__) {

	var global         = __webpack_require__(45)
	  , core           = __webpack_require__(46)
	  , LIBRARY        = __webpack_require__(230)
	  , wksExt         = __webpack_require__(244)
	  , defineProperty = __webpack_require__(50).f;
	module.exports = function(name){
	  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
	  if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
	};

/***/ }),
/* 250 */
/***/ (function(module, exports, __webpack_require__) {

	var getKeys   = __webpack_require__(196)
	  , toIObject = __webpack_require__(199);
	module.exports = function(object, el){
	  var O      = toIObject(object)
	    , keys   = getKeys(O)
	    , length = keys.length
	    , index  = 0
	    , key;
	  while(length > index)if(O[key = keys[index++]] === el)return key;
	};

/***/ }),
/* 251 */
/***/ (function(module, exports, __webpack_require__) {

	// all enumerable object keys, includes symbols
	var getKeys = __webpack_require__(196)
	  , gOPS    = __webpack_require__(211)
	  , pIE     = __webpack_require__(212);
	module.exports = function(it){
	  var result     = getKeys(it)
	    , getSymbols = gOPS.f;
	  if(getSymbols){
	    var symbols = getSymbols(it)
	      , isEnum  = pIE.f
	      , i       = 0
	      , key;
	    while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
	  } return result;
	};

/***/ }),
/* 252 */
/***/ (function(module, exports, __webpack_require__) {

	// 7.2.2 IsArray(argument)
	var cof = __webpack_require__(201);
	module.exports = Array.isArray || function isArray(arg){
	  return cof(arg) == 'Array';
	};

/***/ }),
/* 253 */
/***/ (function(module, exports, __webpack_require__) {

	// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
	var toIObject = __webpack_require__(199)
	  , gOPN      = __webpack_require__(254).f
	  , toString  = {}.toString;

	var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
	  ? Object.getOwnPropertyNames(window) : [];

	var getWindowNames = function(it){
	  try {
	    return gOPN(it);
	  } catch(e){
	    return windowNames.slice();
	  }
	};

	module.exports.f = function getOwnPropertyNames(it){
	  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
	};


/***/ }),
/* 254 */
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
	var $keys      = __webpack_require__(197)
	  , hiddenKeys = __webpack_require__(210).concat('length', 'prototype');

	exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
	  return $keys(O, hiddenKeys);
	};

/***/ }),
/* 255 */
/***/ (function(module, exports, __webpack_require__) {

	var pIE            = __webpack_require__(212)
	  , createDesc     = __webpack_require__(58)
	  , toIObject      = __webpack_require__(199)
	  , toPrimitive    = __webpack_require__(57)
	  , has            = __webpack_require__(198)
	  , IE8_DOM_DEFINE = __webpack_require__(53)
	  , gOPD           = Object.getOwnPropertyDescriptor;

	exports.f = __webpack_require__(54) ? gOPD : function getOwnPropertyDescriptor(O, P){
	  O = toIObject(O);
	  P = toPrimitive(P, true);
	  if(IE8_DOM_DEFINE)try {
	    return gOPD(O, P);
	  } catch(e){ /* empty */ }
	  if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
	};

/***/ }),
/* 256 */
/***/ (function(module, exports) {

	

/***/ }),
/* 257 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(249)('asyncIterator');

/***/ }),
/* 258 */
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(249)('observable');

/***/ }),
/* 259 */
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(260);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(261)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(true) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept(260, function() {
				var newContent = __webpack_require__(260);
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),
/* 260 */
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(8)();
	// imports


	// module
	exports.push([module.id, "@charset \"utf-8\";\r\n/* CSS Document */\r\n.jf-ObjectBrace {\r\n    color: #00AA00;\r\n    font-weight: bold;\r\n}\r\n.jf-ArrayBrace {\r\n    color: #0033FF;\r\n    font-weight: bold;\r\n}\r\n.jf-PropertyName {\r\n    color: #CC0000;\r\n    font-weight: bold;\r\n}\r\n.jf-String {\r\n    color: #007777;\r\n}\r\n.jf-Number {\r\n    color: #AA00AA;\r\n}\r\n.jf-Boolean {\r\n    color: #0000FF;\r\n}\r\n.jf-Null {\r\n    color: #0000FF;\r\n}\r\n.jf-Comma {\r\n    color: #000000;\r\n    font-weight: bold;\r\n}\r\npre.jf-CodeContainer {\r\n    margin-top: 0;\r\n    margin-bottom: 0;\r\n    text-align: left;\r\n}\r\n", ""]);

	// exports


/***/ }),
/* 261 */
/***/ (function(module, exports, __webpack_require__) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	var stylesInDom = {},
		memoize = function(fn) {
			var memo;
			return function () {
				if (typeof memo === "undefined") memo = fn.apply(this, arguments);
				return memo;
			};
		},
		isOldIE = memoize(function() {
			return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase());
		}),
		getHeadElement = memoize(function () {
			return document.head || document.getElementsByTagName("head")[0];
		}),
		singletonElement = null,
		singletonCounter = 0,
		styleElementsInsertedAtTop = [];

	module.exports = function(list, options) {
		if(false) {
			if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
		}

		options = options || {};
		// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
		// tags it will allow on a page
		if (typeof options.singleton === "undefined") options.singleton = isOldIE();

		// By default, add <style> tags to the bottom of <head>.
		if (typeof options.insertAt === "undefined") options.insertAt = "bottom";

		var styles = listToStyles(list);
		addStylesToDom(styles, options);

		return function update(newList) {
			var mayRemove = [];
			for(var i = 0; i < styles.length; i++) {
				var item = styles[i];
				var domStyle = stylesInDom[item.id];
				domStyle.refs--;
				mayRemove.push(domStyle);
			}
			if(newList) {
				var newStyles = listToStyles(newList);
				addStylesToDom(newStyles, options);
			}
			for(var i = 0; i < mayRemove.length; i++) {
				var domStyle = mayRemove[i];
				if(domStyle.refs === 0) {
					for(var j = 0; j < domStyle.parts.length; j++)
						domStyle.parts[j]();
					delete stylesInDom[domStyle.id];
				}
			}
		};
	}

	function addStylesToDom(styles, options) {
		for(var i = 0; i < styles.length; i++) {
			var item = styles[i];
			var domStyle = stylesInDom[item.id];
			if(domStyle) {
				domStyle.refs++;
				for(var j = 0; j < domStyle.parts.length; j++) {
					domStyle.parts[j](item.parts[j]);
				}
				for(; j < item.parts.length; j++) {
					domStyle.parts.push(addStyle(item.parts[j], options));
				}
			} else {
				var parts = [];
				for(var j = 0; j < item.parts.length; j++) {
					parts.push(addStyle(item.parts[j], options));
				}
				stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
			}
		}
	}

	function listToStyles(list) {
		var styles = [];
		var newStyles = {};
		for(var i = 0; i < list.length; i++) {
			var item = list[i];
			var id = item[0];
			var css = item[1];
			var media = item[2];
			var sourceMap = item[3];
			var part = {css: css, media: media, sourceMap: sourceMap};
			if(!newStyles[id])
				styles.push(newStyles[id] = {id: id, parts: [part]});
			else
				newStyles[id].parts.push(part);
		}
		return styles;
	}

	function insertStyleElement(options, styleElement) {
		var head = getHeadElement();
		var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
		if (options.insertAt === "top") {
			if(!lastStyleElementInsertedAtTop) {
				head.insertBefore(styleElement, head.firstChild);
			} else if(lastStyleElementInsertedAtTop.nextSibling) {
				head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
			} else {
				head.appendChild(styleElement);
			}
			styleElementsInsertedAtTop.push(styleElement);
		} else if (options.insertAt === "bottom") {
			head.appendChild(styleElement);
		} else {
			throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
		}
	}

	function removeStyleElement(styleElement) {
		styleElement.parentNode.removeChild(styleElement);
		var idx = styleElementsInsertedAtTop.indexOf(styleElement);
		if(idx >= 0) {
			styleElementsInsertedAtTop.splice(idx, 1);
		}
	}

	function createStyleElement(options) {
		var styleElement = document.createElement("style");
		styleElement.type = "text/css";
		insertStyleElement(options, styleElement);
		return styleElement;
	}

	function createLinkElement(options) {
		var linkElement = document.createElement("link");
		linkElement.rel = "stylesheet";
		insertStyleElement(options, linkElement);
		return linkElement;
	}

	function addStyle(obj, options) {
		var styleElement, update, remove;

		if (options.singleton) {
			var styleIndex = singletonCounter++;
			styleElement = singletonElement || (singletonElement = createStyleElement(options));
			update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
			remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
		} else if(obj.sourceMap &&
			typeof URL === "function" &&
			typeof URL.createObjectURL === "function" &&
			typeof URL.revokeObjectURL === "function" &&
			typeof Blob === "function" &&
			typeof btoa === "function") {
			styleElement = createLinkElement(options);
			update = updateLink.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
				if(styleElement.href)
					URL.revokeObjectURL(styleElement.href);
			};
		} else {
			styleElement = createStyleElement(options);
			update = applyToTag.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
			};
		}

		update(obj);

		return function updateStyle(newObj) {
			if(newObj) {
				if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
					return;
				update(obj = newObj);
			} else {
				remove();
			}
		};
	}

	var replaceText = (function () {
		var textStore = [];

		return function (index, replacement) {
			textStore[index] = replacement;
			return textStore.filter(Boolean).join('\n');
		};
	})();

	function applyToSingletonTag(styleElement, index, remove, obj) {
		var css = remove ? "" : obj.css;

		if (styleElement.styleSheet) {
			styleElement.styleSheet.cssText = replaceText(index, css);
		} else {
			var cssNode = document.createTextNode(css);
			var childNodes = styleElement.childNodes;
			if (childNodes[index]) styleElement.removeChild(childNodes[index]);
			if (childNodes.length) {
				styleElement.insertBefore(cssNode, childNodes[index]);
			} else {
				styleElement.appendChild(cssNode);
			}
		}
	}

	function applyToTag(styleElement, obj) {
		var css = obj.css;
		var media = obj.media;

		if(media) {
			styleElement.setAttribute("media", media)
		}

		if(styleElement.styleSheet) {
			styleElement.styleSheet.cssText = css;
		} else {
			while(styleElement.firstChild) {
				styleElement.removeChild(styleElement.firstChild);
			}
			styleElement.appendChild(document.createTextNode(css));
		}
	}

	function updateLink(linkElement, obj) {
		var css = obj.css;
		var sourceMap = obj.sourceMap;

		if(sourceMap) {
			// http://stackoverflow.com/a/26603875
			css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
		}

		var blob = new Blob([css], { type: "text/css" });

		var oldSrc = linkElement.href;

		linkElement.href = URL.createObjectURL(blob);

		if(oldSrc)
			URL.revokeObjectURL(oldSrc);
	}


/***/ }),
/* 262 */
/***/ (function(module, exports) {

	module.exports = "\n<template v-if=\"!status.loading\">\n    <!-- module start -->\n    <div class=\"api-modules-tab ta-c\" v-if=\"project.editable=='YES'\">\n        <a class=\"api-module api-module-item\" v-bind:class=\"{'active':editing}\" v-on:click=\"editing=true\">编辑模式</a>\n        <a class=\"api-module api-module-item\" v-bind:class=\"{'active':!editing}\" v-on:click=\"editing=false\">浏览模式</a>\n    </div>\n    <div class=\"api-modules\">\n        <div class=\"cb api-modules-container\">\n            <ul>\n                <li data-id=\"{{item.id}}\" v-for=\"item in modules\"\n                    class=\"api-module fl api-module-item\"\n                    v-bind:class=\"{'active':currentModule.id == item.id}\">\n                    <span v-on:click=\"moduleClick(item)\">{{item.name}}</span>\n                    <i class=\"icon-angeldownblock iconfont\" v-on:click.stop=\"flag.moduleActionId= item.id\" v-show=\"editing\"></i>\n                    <div class=\"api-item-actions\" v-show=\"flag.moduleActionId == item.id && editing\">\n                        <div v-on:click=\"moduleEdit(item)\"><i class=\"iconfont icon-bianji\"></i> 编辑</div>\n                        <div v-on:click=\"moduleDelete(item)\"><i class=\"iconfont icon-move\"></i> 删除</div>\n                    </div>\n                   <!-- <i class=\"icon-bianji iconfont\" v-on:click=\"moduleEdit(item)\" v-show=\"editing\"></i>\n                    <i class=\"icon-close iconfont\" v-on:click=\"moduleDelete(item)\" v-show=\"editing\"></i>-->\n                </li>\n                <li class=\"api-module fl api-module-plus\" v-on:click=\"moduleNew\" v-show=\"editing\">\n                    <i class=\"icon-tianjia iconfont\"></i></li>\n                <li class=\"fr api-module\"><i class=\"iconfont icon-chick\" style=\"cursor: default\"></i></li>\n                <li class=\"fr api-module\"><i class=\"iconfont icon-menu\"></i></li>\n                <li class=\"fr api-module api-env\" v-show=\"currentEnv\" v-on:click.stop=\"envClick($event)\">{{currentEnv.name}} <i class=\"iconfont icon-angeldownblock\"></i></li>\n                <li class=\"fr api-module\">\n                    <div class=\"api-module-search\">\n                        <input type=\"text\" class=\"text\" v-on:keyup.enter=\"search\" v-model=\"flag.searchInput\">\n                        <i class=\"iconfont icon-search\" v-on:click=\"search\"></i>\n                    </div>\n                </li>\n            </ul>\n        </div>\n    </div>\n    <div class=\"api-env-details\" id=\"api-env-details\" v-show=\"status.showEnvs\" v-on:mouseleave=\"status.showEnvs=false\">\n        <ul class=\"api-env-items\">\n            <li v-for=\"item in envs\" v-bind:class=\"{'active':item.t==currentEnv.t}\" v-on:click=\"currentEnv=item\" v-on:mouseover=\"envOver(item,$event)\">{{item.name}}</li>\n            <li class=\"line\"></li>\n            <li v-on:click=\"createEnv\" v-on:mouseover=\"status.showEnvValues=false\" v-if=\"project.editable=='YES'\" class=\"api-env-create\">添加环境</li>\n        </ul>\n        <div class=\"api-env-content\" id=\"api-env-content\" v-show=\"status.showEnvValues\">\n            <div class=\"div-table\">\n                <ul class=\"div-table-header div-table-line cb\">\n                    <li class=\"col-sm-4\">变量</li>\n                    <li class=\"col-sm-8\">\n                        <div class=\"cb\">值\n                            <i v-on:click.stop=\"envRemove\" style=\"padding-right: 5px\" class=\"fr iconfont icon-close\"></i>\n                            <i v-on:click.stop=\"envCopy\" style=\"padding-right: 5px\" class=\"fr iconfont icon-copy\"></i>\n                            <i v-on:click.stop=\"envEdit\" style=\"padding-right: 5px\" class=\"fr iconfont icon-edit\"></i>\n                        </div>\n                    </li>\n                </ul>\n                <ul class=\"div-table-line cb\" v-for=\"item in flag.tempEnv.vars\">\n                    <li class=\"col-sm-4\">{{item.name}}</li>\n                    <li class=\"col-sm-8\">{{item.value}}</li>\n                </ul>\n            </div>\n        </div>\n    </div>\n    <div class=\"api-menus\" id=\"api-menus\">\n        <div class=\"api-sanjiaoxings\">\n            <!--<div class=\"api-sanxiaoxing\"></div>-->\n            <i class=\"iconfont icon-sanjiaoxing\"></i>\n        </div>\n        <ul class=\"cb\">\n            <li v-if=\"editable\">\n                <a v-on:click=\"getShares\">\n                    <p><i class=\"iconfont icon-relation\"></i></p>\n                    <p>分享</p>\n                </a>\n            </li>\n            <li v-if=\"editable\">\n                <a v-link=\"'/project/'+id+'/members'\">\n                    <p><i class=\"iconfont icon-user\"></i></p>\n                    <p>成员管理</p>\n                </a>\n            </li>\n            <li v-if=\"editable\">\n                <a v-link=\"'/project/'+id+'/settings'\">\n                    <p><i class=\"iconfont icon-setting\"></i></p>\n                    <p>项目设置</p>\n                </a>\n            </li>\n            <li>\n                <a v-link=\"'/project/'+id+'/quit'\" >\n                    <p><i class=\"iconfont icon-quit\"></i></p>\n                    <p>退出项目</p>\n                </a>\n            </li>\n            <li v-if=\"editable\">\n                <a v-link=\"'/project/'+id+'/transfer'\">\n                    <p><i class=\"iconfont icon-transfer\"></i></p>\n                    <p>项目转让</p>\n                </a>\n            </li>\n            <li v-if=\"editable\">\n                <a v-link=\"'/project/'+id+'/release'\">\n                    <p><i class=\"iconfont icon-delete\"></i></p>\n                    <p>删除项目</p>\n                </a>\n            </li>\n            <li>\n                <a href=\"http://www.xiaoyaoji.com.cn/help.html\" target=\"_blank\">\n                    <p><i class=\"iconfont icon-question\"></i></p>\n                    <p>帮助</p>\n                </a>\n            </li>\n\n        </ul>\n    </div>\n    <datalist id=\"headerlist\">\n        <option v-for=\"item in flag.headers\" value=\"{{item}}\">\n    </datalist>\n    <datalist id=\"requestlist\">\n        <option v-for=\"item in flag.requests\" value=\"{{item}}\">\n    </datalist>\n    <datalist id=\"responselist\">\n        <option v-for=\"item in flag.responses\" value=\"{{item}}\">\n    </datalist>\n    <!-- module end -->\n\n    <div v-show=\"modules.length>0\">\n    <!-- editing start -->\n    <div v-show=\"editing\">\n        <div id=\"api-edit-box\" class=\"apis\">\n            <div class=\"cb api-container\">\n                <!-- api left start -->\n                <div class=\"fl apis-left\">\n                    <div class=\"cb api-fn-actions\">\n                        <div class=\"fl\" v-on:click=\"folderNew\"><i class=\"icon-tianjia iconfont\"></i> 添加分类</div>\n                        <div class=\"fl\" v-on:click=\"folderNewApi(null,$event)\"><i class=\"icon-tianjia iconfont\"></i> 添加接口</div>\n                    </div>\n                    <ul class=\"apis-nav\" id=\"api-edit-nav\">\n                        <li>\n                            <div class=\"api-name api-description cb\" v-bind:class=\"{'active':show=='doc'}\"\n                                 v-on:click=\"show='doc'\">\n                                <span>文档说明</span>\n                                <span class=\"fr api-actions\">\n                                    <i class=\"iconfont icon-list\" v-on:click.stop=\"collapse=!collapse\"></i>\n                                </span>\n                            </div>\n                        </li>\n                        <li>\n                            <div class=\"api-name api-description cb\" v-bind:class=\"{'active':show=='module'}\"\n                                 v-on:click=\"show='module'\">\n                                <span>模块全局参数</span>\n                            </div>\n                        </li>\n\n                        <template v-if=\"!currentModule.folders\">\n                            {{currentModule.folders = []}}\n                        </template>\n                        <li v-for=\"item in currentModule.folders\">\n                            <div class=\"api-name api-folder cb\" v-bind:class=\"{'open':!collapse}\" v-on:click=\"folderClick\">\n                                <span>{{item.name}}</span>\n                                <div class=\"fr\">\n                                    <i v-on:click=\"folderNewApi(item,$event)\" class=\"icon-tianjia iconfont api-new\"></i>\n                                    <i v-on:click.stop=\"flag.actionId=item.id\" class=\"icon-angeldownblock iconfont\"></i>\n                                </div>\n                            </div>\n                            <ul class=\"apis-nav apis-nav-sub\" v-bind:class=\"{'hide':collapse}\">\n                                <li v-for=\"api in item.children\">\n                                    <div class=\"api-name cb\" v-on:click=\"apiClick(api,item)\"\n                                         v-bind:class=\"{'active':currentApi.id == api.id}\">\n                                        <span v-bind:class=\"{'deprecated':api.status=='DEPRECATED'}\">{{api.name}}</span>\n                                        <div class=\"fr\">\n                                            <i v-on:click.stop=\"flag.actionId=api.id\" class=\"icon-angeldownblock iconfont\"></i>\n                                        </div>\n                                    </div>\n                                    <div class=\"api-item-actions\" v-show=\"flag.actionId==api.id\">\n                                        <div v-on:click=\"listItemCopy('api',api.id,'copy')\"><i class=\"iconfont icon-copy\"></i> 复制</div>\n                                        <div v-on:click=\"listItemCopy('api',api.id,'move')\"><i class=\"iconfont icon-move\"></i> 移动</div>\n                                        <div v-on:click=\"apiDelete(api,item.children,$event)\"><i class=\"iconfont icon-move\"></i> 删除</div>\n                                    </div>\n                                </li>\n                            </ul>\n                            <div class=\"api-item-actions\" v-show=\"flag.actionId==item.id\">\n                                <div v-on:click=\"listItemCopy('folder',item.id,'copy')\"><i class=\"iconfont icon-copy\"></i> 复制</div>\n                                <div v-on:click=\"listItemCopy('folder',item.id,'move')\"><i class=\"iconfont icon-move\"></i> 移动</div>\n                                <div v-on:click=\"folderEdit(item,$event)\" ><i class=\"iconfont icon-bianji\"></i> 编辑</div>\n                                <div v-on:click=\"folderDelete(item,$event)\"><i class=\"iconfont icon-move\"></i> 删除</div>\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n                <!-- api left end -->\n                <!-- api content start -->\n                <div class=\"api-content fl\">\n                    <div id=\"api-edit-description\" class=\"api-doc-desc\" v-bind:class=\"{'hide':show!='doc'}\">\n                        <div id=\"editorBox\"></div>\n                        <div class=\"api-btn-save ta-c\">\n                            <button class=\"btn btn-orange\" v-on:click=\"updateProject\">保存修改</button>\n                        </div>\n                    </div>\n                    <div v-bind:class=\"{'hide':show!='module'}\" class=\"form\">\n                        <p class=\"api-details-title\">全局请求头</p>\n                        <div class=\"div-table editing\">\n                            <ul class=\"div-table-header div-table-line cb\">\n                                <li class=\"col-sm-1\">操作</li>\n                                <li class=\"col-sm-3\">参数名称</li>\n                                <li class=\"col-sm-2\">是否必须</li>\n                                <li class=\"col-sm-4\">描述</li>\n                                <li class=\"col-sm-2\">默认值</li>\n                            </ul>\n                            <request-headers-vue\n                                    v-bind:request-headers.sync=\"currentModule.requestHeaders\"\n                                    v-bind:editing=\"editing\"></request-headers-vue>\n                        </div>\n                        <div class=\"item\">\n                            <button class=\"btn btn-default btn-sm\" v-on:click=\"currentModule.requestHeaders.push({children:[],require:'true'})\">\n                                <i class=\"iconfont icon-tianjia\"></i>添加参数\n                            </button>\n                            <button class=\"btn btn-default btn-sm\" v-on:click=\"import2GHeaders\">\n                                <i class=\"iconfont icon-importexport\"></i>导入json\n                            </button>\n                        </div>\n\n                        <p class=\"api-details-title\">全局请求头</p>\n                        <div class=\"div-table editing\">\n                            <ul class=\"div-table-header div-table-line cb\">\n                                <li class=\"col-sm-1\">操作</li>\n                                <li class=\"col-sm-3\">参数名称</li>\n                                <li class=\"col-sm-2\">是否必须</li>\n                                <li class=\"col-sm-2\">类型</li>\n                                <li class=\"col-sm-2\">描述</li>\n                                <li class=\"col-sm-2\">默认值</li>\n                            </ul>\n                            <request-args-vue v-bind:request-args=\"currentModule.requestArgs\"\n                                              v-bind:editing=\"editing\"></request-args-vue>\n                        </div>\n                        <div class=\"item\">\n                            <button class=\"btn btn-default btn-sm\" v-on:click=\"currentModule.requestArgs.push({type:'string',children:[],require:'true'})\">\n                                <i class=\"iconfont icon-tianjia\"></i>添加参数\n                            </button>\n                            <button class=\"btn btn-default btn-sm\" v-on:click=\"import2GRequestArgs\">\n                                <i class=\"iconfont icon-importexport\"></i>导入json\n                            </button>\n                        </div>\n\n                        <div class=\"api-btn-save ta-c\">\n                            <button class=\"btn btn-orange\" v-on:click=\"moduleUpdateCommonParams\">保存修改</button>\n                        </div>\n                    </div>\n                    <div id=\"api-edit-details\" v-bind:class=\"{'hide':show!='api'}\">\n                        <div id=\"api-edit-content\" class=\"form\">\n                            <p class=\"api-details-title\">基本信息</p>\n                            <div class=\"item api-chose-list\">\n                                <div>\n                                    <span>分类</span>\n                                    <div class=\"div-select\">\n                                        <select v-model=\"currentApi.folderId\">\n                                            <option value=\"{{item.id}}\" v-for=\"item in currentModule.folders\">{{item.name}}</option>\n                                        </select>\n                                    </div>\n                                </div>\n                                <div>\n                                    <span>协议</span>\n                                    <div class=\"div-select\">\n                                        <select v-model=\"currentApi.protocol\">\n                                            <option value=\"HTTP\">HTTP</option>\n                                            <option value=\"WEBSOCKET\">WEBSOCKET</option>\n                                        </select>\n                                    </div>\n                                </div>\n                                <template v-if=\"currentApi.protocol=='HTTP'\">\n                                   <div>\n                                       <span>请求方法</span>\n                                       <div class=\"div-select\">\n                                           <select v-model=\"currentApi.requestMethod\">\n                                                <option value=\"GET\">GET</option>\n                                                <option value=\"POST\">POST</option>\n                                                <option value=\"PUT\">PUT</option>\n                                                <option value=\"DELETE\">DELETE</option>\n                                                <option value=\"PATCH\">PATCH</option>\n                                                <option value=\"COPY\">COPY</option>\n                                                <option value=\"OPTIONS\">OPTIONS</option>\n                                            </select>\n                                       </div>\n                                   </div>\n                                    <div>\n                                        <span>请求数据类型</span>\n                                        <div class=\"div-select\">\n                                            <select v-model=\"currentApi.dataType\">\n                                                <option value=\"X-WWW-FORM-URLENCODED\">X-WWW-FORM-URLENCODED</option>\n                                                <template v-if=\"currentApi.requestMethod == 'POST'\">\n                                                    <option value=\"FORM-DATA\">FORM-DATA</option>\n                                                    <option value=\"JSON\">JSON</option>\n                                                    <option value=\"RAW\">RAW</option>\n                                                    <option value=\"BINARY\">BINARY</option>\n                                                    <option value=\"XML\">XML</option>\n                                                </template>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div>\n                                        <span>响应类型</span>\n                                        <div class=\"div-select\">\n                                            <select v-model=\"currentApi.contentType\">\n                                                <option value=\"JSON\">JSON</option>\n                                                <option value=\"JSONP\">JSONP</option>\n                                                <option value=\"TEXT\">TEXT</option>\n                                                <option value=\"XML\">XML</option>\n                                                <option value=\"HTML\">HTML</option>\n                                                <option value=\"IMAGE\">IMAGE</option>\n                                                <option value=\"BINARY\">BINARY</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div>\n                                        <span>状态</span>\n                                        <div class=\"div-select\">\n                                            <select v-model=\"currentApi.status\">\n                                                <option value=\"ENABLE\">启用</option>\n                                                <option value=\"DEPRECATED\">已废弃</option>\n                                            </select>\n                                        </div>\n                                    </div>\n\n                                </template>\n                            </div>\n                            <div class=\"item\">\n                                <div class=\"col-sm-1 label\">接口名称</div>\n                                <div class=\"col-sm-11\">\n                                    <input type=\"text\" class=\"text\" maxlength=\"30\" placeholder=\"请输入接口名称\"\n                                           v-model=\"currentApi.name\" value=\"{{currentApi.name}}\">\n                                </div>\n                            </div>\n                            <div class=\"item\">\n                                <div class=\"col-sm-1 label\">请求地址</div>\n                                <div class=\"col-sm-11\">\n                                    <input type=\"text\" placeholder=\"如:/api/test\" v-model=\"currentApi.url\" class=\"text\"\n                                           value=\"{{currentApi.url}}\">\n                                    <template v-if=\"currentEnv.vars && currentEnv.vars.length>0\">\n                                        <p class=\"hint\">实际请求地址:{{requestURL}}</p>\n                                        <p class=\"api-env-vars\">\n                                            变量：<span v-on:click=\"apiVarsClick(item.name,$event)\" v-for=\"item in currentEnv.vars\">{{item.name}}</span>\n                                        </p>\n                                    </template>\n                                </div>\n                            </div>\n                            <div class=\"item\">\n                                <div class=\"col-sm-1 label\">接口描述</div>\n                                <div class=\"col-sm-11\">\n                                <textarea class=\"text\"\n                                          v-model=\"currentApi.description\">{{currentApi.description}}</textarea>\n                                </div>\n                            </div>\n                            <template v-if=\"currentApi.protocol == 'HTTP'\">\n                                <p class=\"api-details-title\">发送数据</p>\n                            <div class=\"tabs\">\n                                <a class=\"tab\" v-on:click=\"flag.tab='header'\" v-bind:class=\"{'active':(flag.tab=='header') ||  (currentApi.dataType=='BINARY')}\">请求头(Header)</a>\n                                <a class=\"tab\" v-on:click=\"flag.tab='body'\" v-bind:class=\"{'active':flag.tab=='body'}\"  v-if=\"currentApi.dataType!='BINARY'\">请求参数(Body)</a>\n                            </div>\n                            <!-- 请求头参数 -->\n                            <div class=\"tab-content\" v-bind:class=\"{'active':(flag.tab=='header') ||  (currentApi.dataType=='BINARY') }\">\n                                <div class=\"div-table editing\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-1\">操作</li>\n                                        <li class=\"col-sm-3\">参数名称</li>\n                                        <li class=\"col-sm-2\">是否必须</li>\n                                        <li class=\"col-sm-4\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-headers-vue\n                                            v-bind:request-headers.sync=\"currentApi.requestHeaders\"\n                                            v-bind:editing=\"editing\"></request-headers-vue>\n                                </div>\n                                <div class=\"item\">\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"insertNewRequestHeadersRow\">\n                                        <i class=\"iconfont icon-tianjia\"></i>添加参数\n                                    </button>\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"import2RequestHeaders\">\n                                        <i class=\"iconfont icon-importexport\"></i>导入json\n                                    </button>\n                                </div>\n                            </div>\n\n\n\n                            <!-- 请求参数 -->\n                            <div class=\"tab-content\" v-bind:class=\"{'active':flag.tab=='body'}\" v-if=\"currentApi.dataType!='BINARY'\">\n                                <div class=\"div-table editing\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-1\">操作</li>\n                                        <li class=\"col-sm-3\">参数名称</li>\n                                        <li class=\"col-sm-2\">是否必须</li>\n                                        <li class=\"col-sm-2\">类型</li>\n                                        <li class=\"col-sm-2\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-args-vue v-bind:request-args=\"currentApi.requestArgs\"\n                                                      v-bind:editing=\"editing\"></request-args-vue>\n                                </div>\n                                <div class=\"item\">\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"insertNewRequestArgsRow\">\n                                        <i class=\"iconfont icon-tianjia\"></i>添加参数\n                                    </button>\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"import2RequestArgs\">\n                                        <i class=\"iconfont icon-importexport\"></i>导入json\n                                    </button>\n                                </div>\n                            </div>\n\n                            <!-- 响应参数 -->\n                            <p class=\"api-details-title\">响应数据</p>\n                            <div>\n                                <div class=\"div-table editing\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-1\">操作</li>\n                                        <li class=\"col-sm-3\">参数名称</li>\n                                        <li class=\"col-sm-2\">是否必须</li>\n                                        <li class=\"col-sm-2\">类型</li>\n                                        <li class=\"col-sm-4\">描述</li>\n                                    </ul>\n                                    <response-args-vue v-bind:response-args=\"currentApi.responseArgs\"\n                                                       v-bind:editing=\"editing\"></response-args-vue>\n                                </div>\n                                <div class=\"item\">\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"insertNewResponseArgsRow\">\n                                        <i class=\"iconfont icon-tianjia\"></i>添加参数\n                                    </button>\n                                    <button class=\"btn btn-default btn-sm\" v-on:click=\"import2ResponseArgs\">\n                                        <i class=\"iconfont icon-importexport\"></i>导入json\n                                    </button>\n                                </div>\n                            </div>\n\n                            <p class=\"api-details-title\">示例数据</p>\n                            <textarea class=\"api-example api-field\" v-model=\"currentApi.example\"\n                                  placeholder=\"请添加一些示例数据\">{{currentApi.example}}</textarea>\n                            </template>\n                        </div>\n                        <div class=\"api-btn-save ta-c\">\n                            <button class=\"btn btn-orange\" v-on:click=\"apiSave\">保存修改</button>\n                        </div>\n                    </div>\n                </div>\n                <!-- api content end -->\n            </div>\n        </div>\n\n\n    </div>\n    <!-- editing end -->\n\n    <!-- view start -->\n    <div v-show=\"!editing\">\n        <template v-if=\"!error.projectNotExists\">\n            <div class=\"apis\">\n                <div v-if=\"currentModule.folders && currentModule.folders.length>0\" class=\"cb api-container\">\n                    <div class=\"fl apis-left\">\n                        <ul class=\"apis-nav api-folder-list\">\n                            <li>\n                                <div class=\"api-name api-description\" v-bind:class=\"{'active':show=='doc'}\"\n                                     v-on:click=\"show='doc'\">\n                                    <span>文档说明</span>\n                                    <span class=\"fr api-actions\">\n                                    <i class=\"iconfont icon-list\" v-on:click.stop=\"collapse=!collapse\"></i>\n                                </span>\n                                </div>\n                            </li>\n                            <template v-if=\"!currentModule.folders\">\n                                {{currentModule.folders = []}}\n                            </template>\n                            <li v-for=\"item in currentModule.folders\" class=\"cb\">\n                                <!--<span class=\"fr handle\">::</span>-->\n                                <div class=\"api-name api-folder\" v-bind:class=\"{'open':!collapse}\" v-on:click=\"folderClick\">\n                                    <span>{{item.name}}</span>\n                                </div>\n                                <ul class=\"apis-nav apis-nav-sub\" v-bind:class=\"{'hide':collapse}\">\n                                    <li v-for=\"api in item.children\" v-on:click=\"show='api'\">\n                                        <div class=\"api-name\" v-bind:class=\"{'active':currentApi.id == api.id}\"\n                                             v-on:click=\"apiClick(api,item)\">\n                                            <span v-bind:class=\"{'deprecated':api.status=='DEPRECATED'}\">{{api.name}}</span>\n                                        </div>\n                                    </li>\n                                </ul>\n                            </li>\n                        </ul>\n                    </div>\n                    <div class=\"api-content fl\">\n                        <span class=\"api-update-time\">更新时间: <span id=\"api-update-time\">{{currentModule.lastUpdateTime}}</span></span>\n                        <div id=\"api-doc-desc\" class=\"api-doc-desc\" v-show=\"show=='doc'\">\n                            <div id=\"view-box\" v-show=\"project.details\"></div>\n                            <div v-show=\"!project.details\" class=\"ta-c api-error-tip\">\n                                <i class=\"iconfont icon-info\"></i>\n                                <p>项目还未书写文档说明。</p>\n                            </div>\n                        </div>\n                        <div id=\"api-details\" class=\"api-details\" v-show=\"show=='api'\">\n                            <p class=\"api-details-title\">基本信息</p>\n                            <div class=\"api-base-info api-edit-box\">\n                                <p v-if=\"currentApi.protocol\">请求类型: {{currentApi.protocol}}</p>\n                                <p v-if=\"currentApi.url\">接口地址: {{requestURL}}</p>\n                                <template v-if=\"currentApi.protocol=='HTTP'\">\n                                    <p v-if=\"currentApi.requestMethod\">请求方式: {{currentApi.requestMethod}}</p>\n                                    <p v-if=\"currentApi.dataType\">数据类型: {{currentApi.dataType}}</p>\n                                    <p v-if=\"currentApi.contentType\">响应类型: {{currentApi.contentType}}</p>\n                                </template>\n                                <p v-if=\"currentApi.status\">接口状态: {{currentApi.status=='DEPRECATED'?'已废弃':'启用'}}</p>\n                            </div>\n                            <template v-if=\"currentApi.description\">\n                                <p class=\"api-details-title\">接口描述</p>\n                                <pre>{{currentApi.description}}</pre>\n                            </template>\n                            <template v-if=\"(currentModule.requestHeaders&&currentModule.requestHeaders.length>0)\">\n                                <p class=\"api-details-title\">全局请求头</p>\n                                <div class=\"div-table\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-2\">参数名称</li>\n                                        <li class=\"col-sm-1\">是否必须</li>\n                                        <li class=\"col-sm-7\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-headers-vue\n                                            v-bind:request-headers.sync=\"currentModule.requestHeaders\"\n                                            v-bind:editing=\"editing\"></request-headers-vue>\n                                </div>\n                            </template>\n\n                            <template v-if=\"(currentApi.requestHeaders  && currentApi.requestHeaders.length>0)\">\n                                <p class=\"api-details-title\">请求头</p>\n                                <div class=\"div-table\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-2\">参数名称</li>\n                                        <li class=\"col-sm-1\">是否必须</li>\n                                        <li class=\"col-sm-7\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-headers-vue\n                                            v-bind:request-headers.sync=\"currentApi.requestHeaders\"\n                                            v-bind:editing=\"editing\"></request-headers-vue>\n                                </div>\n                            </template>\n\n                            <template v-if=\"(currentModule.requestArgs && currentModule.requestArgs.length>0)\">\n                                <p class=\"api-details-title\">全局请求参数</p>\n                                <div class=\"div-table\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-2\">参数名称</li>\n                                        <li class=\"col-sm-1\">是否必须</li>\n                                        <li class=\"col-sm-1\">类型</li>\n                                        <li class=\"col-sm-6\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-args-vue\n                                            v-bind:request-args.sync=\"currentModule.requestArgs\"\n                                            v-bind:editing=\"editing\"></request-args-vue>\n                                </div>\n                            </template>\n\n                            <template v-if=\" (currentApi.requestArgs  && currentApi.requestArgs.length>0)\">\n                                <p class=\"api-details-title\">请求参数</p>\n                                <div class=\"div-table\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-2\">参数名称</li>\n                                        <li class=\"col-sm-1\">是否必须</li>\n                                        <li class=\"col-sm-1\">类型</li>\n                                        <li class=\"col-sm-6\">描述</li>\n                                        <li class=\"col-sm-2\">默认值</li>\n                                    </ul>\n                                    <request-args-vue\n                                            v-bind:request-args.sync=\"currentApi.requestArgs\"\n                                            v-bind:editing=\"editing\"></request-args-vue>\n                                </div>\n                            </template>\n                            <template v-if=\"currentApi.responseArgs && currentApi.responseArgs.length>0\">\n                                <p class=\"api-details-title\">响应数据</p>\n                                <div class=\"div-table\">\n                                    <ul class=\"div-table-header div-table-line cb\">\n                                        <li class=\"col-sm-2\">参数名称</li>\n                                        <li class=\"col-sm-1\">是否必须</li>\n                                        <li class=\"col-sm-2\">数据类型</li>\n                                        <li class=\"col-sm-7\">描述</li>\n                                    </ul>\n                                    <response-args-vue\n                                            v-bind:response-args.sync=\"currentApi.responseArgs\"\n                                            v-bind:editing=\"editing\"></response-args-vue>\n                                </div>\n                            </template>\n\n                            <template v-if=\"currentApi.example\">\n                                <p class=\"api-details-title\">例子</p>\n                                <div class=\"api-details-desc api-edit-box\">\n                                    <pre class=\"content\">{{currentApi.example}}</pre>\n                                </div>\n                            </template>\n                            <p class=\"api-details-title\">演示</p>\n                            <template v-if=\"!currentApi.protocol || currentApi.protocol == 'HTTP'\">\n                                <div class=\"form\">\n                                    <div class=\"item\">\n                                        <div class=\"col-sm-2 label second\">请求地址</div>\n                                        <div class=\"col-sm-8\">\n                                            <input type=\"hidden\" value=\"{{requestURL}}\">\n                                            <input type=\"text\" class=\"text\" id=\"requestURL\">\n                                        </div>\n                                        <div class=\"col-sm-2\" style=\"text-align: right\">\n                                            <div class=\"xyj-dropdown\">\n                                                <span class=\"api-view-env xyj-dropdown-toggle\">{{currentEnv.name}}  <i class=\"iconfont icon-angeldownblock\"></i></span>\n                                                <ul class=\"xyj-dropdown-list api-view-env-items\">\n                                                    <li v-for=\"item in envs\" v-bind:class=\"{'active':item.t==currentEnv.t}\"\n                                                        v-on:click=\"currentEnv=item\"\n                                                        v-on:mouseover=\"envOver(item,$event)\">{{item.name}}</li>\n                                                </ul>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <template v-if=\"(currentModule.requestHeaders && currentModule.requestHeaders.length>0) || (currentApi.requestHeaders && currentApi.requestHeaders.length>0)\">\n                                    <form class=\"api-test form\" id=\"header-form\">\n                                        <p class=\"api-details-title second\">请求头</p>\n                                        <div class=\"item\" v-for=\"item in currentModule.requestHeaders\">\n                                            <div class=\"col-sm-2 label\">{{item.name}}</div>\n                                            <div class=\"col-sm-8\">\n                                                <input type=\"text\" name=\"{{item.name}}\"\n                                                       value=\"{{item.testValue || item.defaultValue}}\"\n                                                       placeholder=\"{{item.description}}\" class=\"text\">\n                                            </div>\n                                        </div>\n                                        <div class=\"item\" v-for=\"item in currentApi.requestHeaders\">\n                                            <div class=\"col-sm-2 label\">{{item.name}}</div>\n                                            <div class=\"col-sm-8\">\n                                                <input type=\"text\" name=\"{{item.name}}\"\n                                                       value=\"{{item.testValue || item.defaultValue}}\"\n                                                       placeholder=\"{{item.description}}\" class=\"text\">\n                                            </div>\n                                        </div>\n                                    </form>\n                                </template>\n\n                                <div class=\"form\">\n\n                                <template v-if=\"currentApi.urlArgs && currentApi.urlArgs.length>0\">\n                                    <p class=\"api-details-title second\">地址参数</p>\n                                    <div class=\"item\" v-for=\"item in currentApi.urlArgs\">\n                                        <div class=\"col-sm-2 label\">{{item.name}}</div>\n                                        <div class=\"col-sm-8\">\n                                            <input data-type=\"text\" v-model=\"item.value\" type=\"text\"\n                                                   name=\"{{item}}\" placeholder=\"替换URL上的参数\"\n                                                   class=\"text\">\n                                        </div>\n                                    </div>\n                                </template>\n                                </div>\n                                <form class=\"form\" id=\"args-form\" v-on:submit.prevent>\n                                    <template v-if=\"(currentModule.requestArgs && currentModule.requestArgs.length>0) || (currentApi.requestArgs && currentApi.requestArgs.length>0)\">\n                                        <div class=\"cb\">\n                                            <div>\n                                                <template v-if=\"currentApi.dataType=='XML' || currentApi.dataType =='JSON'\">\n                                                    <div class=\"item\">\n                                                        <div class=\"col-sm-2 label\">Body</div>\n                                                        <div class=\"col-sm-8\">\n                                                            <pre id=\"ace-editor-box\"></pre>\n                                                        </div>\n                                                    </div>\n                                                </template>\n                                                <template v-else>\n                                                    <p class=\"api-details-title second\">请求参数</p>\n                                                    <div class=\"item\"  v-for=\"item in currentModule.requestArgs\">\n                                                        <div class=\"col-sm-2 label\">{{item.name}}</div>\n                                                        <div class=\"col-sm-8\" v-bind:class=\"{'full-text':item.type=='file'}\">\n                                                            <input data-type=\"{{item.type}}\"\n                                                                   type=\"{{item.type=='file'?'file':'text'}}\"\n                                                                   name=\"{{item.name}}\"\n                                                                   class=\"api-request-args-item\"\n                                                                   value=\"{{item.testValue || item.defaultValue}}\"\n                                                                   placeholder=\"{{item.description}}\"\n                                                                   v-bind:class=\"{'text':item.type!='file'}\">\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"item\"  v-for=\"item in currentApi.requestArgs\">\n                                                        <div class=\"col-sm-2 label\">{{item.name}}</div>\n                                                        <div class=\"col-sm-8\" v-bind:class=\"{'full-text':item.type=='file'}\">\n                                                            <input data-type=\"{{item.type}}\"\n                                                                   type=\"{{item.type=='file'?'file':'text'}}\"\n                                                                   name=\"{{item.name}}\"\n                                                                   class=\"api-request-args-item\"\n                                                                   value=\"{{item.testValue || item.defaultValue}}\"\n                                                                   placeholder=\"{{item.description}}\"\n                                                                   v-bind:class=\"{'text':item.type!='file'}\">\n                                                        </div>\n                                                    </div>\n                                                </template>\n                                            </div>\n                                        </div>\n                                    </template>\n\n                                    <template v-if=\"currentApi.dataType=='RAW'\">\n                                        <p class=\"api-details-title second\">请求数据</p>\n                                        <div class=\"item\">\n                                            <div class=\"col-sm-2 label\">body</div>\n                                            <div class=\"col-sm-8\">\n                                                <textarea class=\"text\" id=\"rawBody\"></textarea>\n                                            </div>\n                                        </div>\n                                    </template>\n                                    <template v-if=\"currentApi.dataType=='BINARY'\">\n                                        <p class=\"api-details-title second\">请求数据</p>\n                                        <div class=\"item\">\n                                            <div class=\"col-sm-2 label\">BINARY</div>\n                                            <div class=\"col-sm-8\">\n                                                <input type=\"file\" class=\"full-text\" id=\"binaryBody\">\n                                            </div>\n                                        </div>\n                                    </template>\n\n\n\n                                    <div class=\"form\">\n                                        <div class=\"item\">\n                                            <div class=\"col-sm-2 label\"></div>\n                                            <div class=\"col-sm-8\">\n                                                <input type=\"button\" id=\"api-submit\" v-on:click.stop=\"apiSubmit\"\n                                                       class=\"btn btn-primary\" value=\"{{status.apiLoading?'加载中':'发送'}}\">\n                                                <input type=\"button\" v-on:click.stop=\"apiMock\" v-show=\"currentApi.responseArgs && currentApi.responseArgs.length>0\"\n                                                       class=\"btn btn-orange\" value=\"mock\">\n\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!--<p class=\"api-details-title\">结果数据</p>-->\n                                <div class=\"api-result-tabs cb\" v-show=\"currentApi.result\">\n                                    <a class=\"tab fl active\" v-on:click=\"flag.resultActive='content'\" v-bind:class=\"{'active':(flag.resultActive=='content')}\">Body</a>\n                                    <a class=\"tab fl\" v-on:click=\"flag.resultActive='headers'\" v-bind:class=\"{'active':(flag.resultActive=='headers')}\">Headers</a>\n                                    <a class=\"tab fr\">Time: {{currentApi.resultRunTime}} ms</a>\n                                    <a class=\"tab fr\">StatusCode: {{currentApi.resultStatusCode}}</a>\n                                </div>\n                                <div v-show=\"currentApi.result\" class=\"api-result-box\">\n                                    <i v-show=\"!!currentApi.result && (flag.resultActive=='content')\" id=\"api-result-copy\" class=\"iconfont icon-copy\"></i>\n                                    <i v-show=\"!!currentApi.result && currentApi.contentType=='HTML' && (flag.resultActive=='content')\" class=\"iconfont icon-openwindow\" v-on:click=\"openNewWindow\"></i>\n                                    <i v-show=\"!!currentApi.result && (flag.resultActive=='headers')\" id=\"api-result-header-copy\" class=\"iconfont icon-copy\"></i>\n                                    <div id=\"api-result\">\n                                        <pre v-show=\"flag.resultActive=='content'\" id=\"api-result-content\">{{{currentApi.result}}}</pre>\n                                        <div v-show=\"flag.resultActive=='headers'\" id=\"api-result-headers\">\n                                            <div class=\"api-result-headers-list\" v-show=\"currentApi.resultHeaders\">\n                                                {{{currentApi.resultHeaders | html}}}\n                                            </div>\n                                            <div v-else class=\"api-result-headers-list\">\n                                                <div v-if=\"extVer>=1.4\">\n                                                    No header for you\n                                                </div>\n                                                <div v-else>\n                                                    请下载或升级浏览器插件。\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"ta-c api-plugin-tip\" v-if=\"!extVer\">\n                                    <i class=\"iconfont icon-chrome\"></i><br/>\n                                    <p>由于浏览器有跨域限制，如果您的服务器不支持CORS协议，需要安装我们开发的Chrome插件“小幺鸡”</p>\n                                    <p>安装的时候请注意勾选，安装后请刷新页面。</p>\n                                    <p>\n                                        <a href=\"https://chrome.google.com/webstore/detail/%E5%B0%8F%E5%B9%BA%E9%B8%A1/omohfhadnbkakganodaofplinheljnbd\" target=\"_blank\" class=\"btn btn-default\">Chrome应用商店</a>\n                                        <a href=\"/extension/xiaoyaoji.crx\" target=\"_blank\" class=\"btn btn-default\">本地下载</a>\n                                        <a href=\"http://jingyan.baidu.com/article/e5c39bf56286ae39d6603374.html\" target=\"_blank\" class=\"btn btn-default\">本地下载安装教程</a>\n                                    </p>\n                                </div>\n                                <div v-else>\n                                    <div class=\"ta-c api-plugin-tip\" v-if=\"extVer < 1.3\">\n                                        <i class=\"iconfont icon-chrome\"></i><br/>\n                                        <p>您安装的『小幺鸡』插件版本有更新,为了避免使用出现bug,请下载升级</p>\n                                        <p>安装的时候请注意勾选，安装后请刷新页面。</p>\n                                        <p>\n                                            <a href=\"https://chrome.google.com/webstore/detail/%E5%B0%8F%E5%B9%BA%E9%B8%A1/omohfhadnbkakganodaofplinheljnbd\" target=\"_blank\" class=\"btn btn-default\">Chrome应用商店</a>\n                                            <a href=\"/extension/xiaoyaoji.crx\" target=\"_blank\" class=\"btn btn-default\">本地下载</a>\n                                            <a href=\"http://jingyan.baidu.com/article/e5c39bf56286ae39d6603374.html\" target=\"_blank\" class=\"btn btn-default\">本地下载安装教程</a>\n                                        </p>\n                                    </div>\n                                </div>\n                            </template>\n                            <template v-if=\"currentApi.protocol == 'WEBSOCKET'\">\n                                <div class=\"form\">\n                                    <div class=\"item\">\n                                        <div class=\"col-sm-2 label\">日志</div>\n                                        <div class=\"col-sm-10\"><textarea class=\"text\" v-model=\"ws.log\"\n                                                                         rows=\"10\"></textarea></div>\n                                    </div>\n                                    <div class=\"item\">\n                                        <div class=\"col-sm-2 label\">地址</div>\n                                        <div class=\"col-sm-10\">\n                                            <input type=\"text\" class=\"text\" id=\"websocketRequestURL\"\n                                                                      value=\"{{requestURL}}\"\n                                                                      v-model=\"ws.url\"></div>\n                                    </div>\n\n                                    <div class=\"item\" v-if=\"ws.connected\">\n                                        <div class=\"col-sm-2 label\">发送消息</div>\n                                        <div class=\"col-sm-10\"><input type=\"text\" class=\"text\" v-model=\"ws.message\">\n                                        </div>\n                                    </div>\n\n                                    <div class=\"item\">\n                                        <div class=\"col-sm-2\">&nbsp;</div>\n                                        <div class=\"col-sm-10\">\n                                            <input type=\"button\" v-if=\"!ws.connected\" v-on:click=\"wsConnect\"\n                                                   class=\"btn btn-primary\" value=\"连接\">\n                                            <template v-else>\n                                                <input type=\"button\" class=\"btn btn-primary\"\n                                                       v-on:click=\"wsSendMessage\" value=\"发送消息\">\n                                                <input type=\"button\" class=\"btn btn-danger\"\n                                                       v-on:click=\"wsDisconnect\" value=\"断开连接\">\n                                            </template>\n                                        </div>\n                                    </div>\n                                </div>\n                            </template>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"ta-c api-error-tip\" v-cloak v-else>\n                    <i class=\"iconfont icon-api\" style=\"font-size: 120px\"></i>\n                    <p style=\"font-size: 24px\">该模块下接口列表为空</p>\n                    <p style=\"font-size: 12px\">编辑模式可管理接口</p>\n                </div>\n            </div>\n\n        </template>\n        <template v-if=\"error.projectNotExists\">\n            <div class=\"ta-c api-error-tip\">\n                <i class=\"iconfont icon-cloud\"></i>\n                <p style=\"font-size: 24px\">项目不可见或不存在</p>\n            </div>\n        </template>\n    </div>\n    <!-- view end -->\n\n    <!-- environment start -->\n    <div class=\"modal env-modal\" v-cloak v-if=\"status.envModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.envModal=false\"></i>\n        </div>\n        <div class=\"modal-content\">\n            <div class=\"modal-layout1 form\" style=\"width: 500px\">\n                <p class=\"title\" style=\"margin-bottom: 20px\">添加新环境</p>\n                <div class=\"hint\">\n                    环境变量运行在URL中,你可以配置多个(线上、灰度、开发)环境变量。在URL中使用方式{{flag.varname}},例：<br/>\n                    线上环境：prefix => http://www.xiaoyaoji.com.cn<br/>\n                    则<br/>\n                    请求URL：{{flag.prefix}}/say => http://www.xiaoyaoji.com.cn/say\n                </div>\n                <p class=\"title\"></p>\n                <div class=\"item\">\n                    <div class=\"col-sm-12\">\n                        <input type=\"text\" class=\"text\" v-model=\"flag.tempEnv.name\" placeholder=\"请输入环境名称\">\n                    </div>\n                </div>\n                <div class=\"item\" v-for=\"(index,item) in flag.tempEnv.vars\">\n                    <div class=\"col-sm-5\"><input type=\"text\" v-model=item.name class=\"text\" v-on:focus=\"envNewLine(index)\" placeholder=\"变量名称\" value=\"{{item.name}}\"></div>\n                    <div class=\"col-sm-6\">\n                        <input type=\"text\" class=\"text\" v-model=\"item.value\" placeholder=\"变量值\" value=\"{{item.value}}\">\n                    </div>\n                    <div class=\"col-sm-1 full-text\">\n                        <i class=\"iconfont icon-close\" v-on:click=\"flag.tempEnv.vars.$remove(item)\"></i>\n                    </div>\n                </div>\n\n                <div class=\"ta-c actions\">\n                    <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                            v-on:click=\"status.envModal=false\">\n                        取消\n                    </button>\n                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                    <button class=\"btn btn-primary middle\" v-on:click=\"envSave\" tabindex=\"2\">确定</button>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- environment end -->\n    </div>\n    <div v-else>\n        <div class=\"ta-c api-error-tip\">\n            <i class=\"iconfont icon-cloud\"></i>\n            <p style=\"font-size: 24px\">模块列表为空,请先创建模块</p>\n        </div>\n    </div>\n\n    <!-- modal list start -->\n    <div class=\"modal\" v-cloak v-if=\"status.folderModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.folderModal=false\"></i>\n        </div>\n        <div class=\"modal-content\">\n            <div class=\"modal-layout1 form\">\n                <validator name=\"ff\">\n                    <p class=\"title\">{{!folderName?'创建':'编辑'}}分类</p>\n                    <input type=\"text\" class=\"k1 text\" id=\"folderName\" value=\"{{folderName}}\" maxlength=\"20\"\n                           initial=\"off\"\n                           v-model=\"folderName\"\n                           v-validate:folder-name=\"{maxlength:20}\"\n                           v-bind:autofocus=\"status.folderModal\"\n                           tabindex=\"1\" placeholder=\"请输入文件夹名称\">\n                    <div class=\"tip\" v-if=\"$ff.folderName.invalid\">{{$ff.errors[0].message}}</div>\n                </validator>\n                <div class=\"ta-c actions\">\n                    <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                            v-on:click=\"status.folderModal=false\">取消\n                    </button>\n                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                    <button class=\"btn btn-primary middle\" v-on:click=\"folderSave\" tabindex=\"2\">确定</button>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"modal\" v-cloak v-if=\"status.moduleModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.moduleModal=false\"></i>\n        </div>\n        <div class=\"modal-content\">\n            <div class=\"modal-layout1 form\">\n                <validator name=\"mf\">\n                    <p class=\"title\">{{!moduleName?'创建':'编辑'}}模块</p>\n                    <input type=\"text\" maxlength=\"20\" id=\"moduleName\" class=\"k1 text\" v-model=\"moduleName\"\n                           value=\"{{moduleName}}\"\n                           initial=\"off\"\n                           v-validate:module-name=\"{maxlength:20}\"\n                           v-bind:autofocus=\"status.folderModal\"\n                           tabindex=\"1\" placeholder=\"请输入模块名称\">\n                    <div class=\"tip\" v-if=\"$mf.moduleName.invalid\">{{$mf.errors[0].message}}</div>\n                    <div class=\"ta-c actions\">\n                        <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                                v-on:click=\"status.moduleModal=false\">\n                            取消\n                        </button>\n                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                        <button class=\"btn btn-primary middle\" v-on:click=\"moduleSave\" tabindex=\"2\">确定</button>\n                    </div>\n                </validator>\n            </div>\n        </div>\n    </div>\n    <div class=\"modal\" v-cloak v-if=\"status.importModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.importModal=false\"></i>\n        </div>\n        <div class=\"modal-content\">\n            <div class=\"modal-layout1 form\" style=\"width: 500px\">\n                <validator name=\"if\">\n                    <p class=\"title\">导入JSON</p>\n                    <textarea rows=\"15\" class=\"k1 text\" v-model=\"importValue\" initial=\"off\"\n                              v-bind:autofocus=\"status.importModal\"\n                              tabindex=\"1\" placeholder=\"请粘贴导入的数据\"></textarea>\n                    <div class=\"ta-c actions\">\n                        <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                                v-on:click=\"status.importModal=false\">\n                            取消\n                        </button>\n                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                        <button class=\"btn btn-primary middle\" v-on:click=\"importOk\" tabindex=\"2\">确定</button>\n                    </div>\n                </validator>\n            </div>\n        </div>\n    </div>\n    <div class=\"modal\" v-cloak v-if=\"status.moveCopyModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.moveCopyModal=false\"></i>\n        </div>\n        <div class=\"modal-content\">\n            <div class=\"modal-layout1 form\" style=\"width: 500px\">\n                <p class=\"title\">{{flag.move?'移动':'复制'}}{{flag.moveCopyName}}</p>\n                <div class=\"item\">\n                    <div class=\"label col-sm-2\">选择模块</div>\n                    <div class=\"col-sm-10 full-text\">\n                        <select class=\"text\" v-model=\"flag.moveCopySelectModuleId\">\n                            <option v-for=\"item in modules\" v-bind:value=\"item.id\">{{item.name}}</option>\n                        </select>\n                    </div>\n                </div>\n                <div class=\"item\" v-for=\"m in modules\" v-if=\"flag.moveCopySelectModuleId==m.id && flag.moveCopyName=='接口'\">\n                    <div class=\"label col-sm-2\">选择分类</div>\n                    <div class=\"col-sm-10 full-text\">\n                        <select class=\"text\" v-model=\"flag.moveCopySelectFolderId\">\n                            <option v-for=\"item in m.folders\" v-bind:value=\"item.id\">{{item.name}}</option>\n                        </select>\n                    </div>\n                </div>\n\n                <div class=\"ta-c actions\">\n                    <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                            v-on:click=\"status.moveCopyModal=false\">\n                        取消\n                    </button>\n                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                    <button class=\"btn btn-primary middle\" v-on:click=\"copyMoveOk\" tabindex=\"2\">确定</button>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"modal\" v-cloak v-if=\"status.shareModal\">\n        <div class=\"modal-header\">\n            <i class=\"iconfont icon-close modal-close\" v-on:click=\"status.shareModal=false\"></i>\n        </div>\n        <div class=\"modal-content api-share\">\n            <div class=\"modal-layout-box form\" v-show=\"!status.shareCreateModal\">\n                <p class=\"title\">分享列表</p>\n                <ul>\n                    <li class=\"api-share-item\" v-for=\"item in shares\">\n                        <div class=\"cb\">\n                            <a class=\"fl api-share-title\" target=\"_blank\" v-link=\"'/share/'+item.id\">[{{item.username}}] {{item.name}}</a>\n                            <div class=\"fr\">\n                                <i class=\"iconfont icon-lock\" v-on:click=\"shareItemClockClick\"></i>\n                                <i class=\"iconfont icon-close\" v-on:click=\"deleteShare(item)\"></i>\n                            </div>\n                            <input type=\"text\" placeholder=\"空则表示不用密码\" v-on:blur=\"shareItemPasswordBlur(item,$event)\" data-value=\"{{item.password}}\" class=\"text api-share-pwd-box\" value=\"{{item.password}}\">\n                        </div>\n                        <div class=\"cb\">\n                            <span v-if=\"item.shareAll == 'YES'\">所有模块</span>\n                            <span v-else>\n                                <span v-for=\"m in item.shareModules\">{{m.name}},</span>\n                            </span>\n                            <span class=\"fr\">{{item.createTime}}</span>\n                        </div>\n                    </li>\n                </ul>\n                <br/>\n                <button class=\"btn btn-primary middle\" v-on:click=\"status.shareCreateModal=true\">创建新分享</button>\n            </div>\n            <div class=\"modal-layout-box form \" v-show=\"status.shareCreateModal\">\n                <form onsubmit=\"return false;\" id=\"share-form\" >\n                    <p class=\"title\">创建新的分享</p>\n                    <div class=\"item\">\n                        <div class=\"col-sm-2 label\">整个项目</div>\n                        <div class=\"col-sm-10 full-text\">\n                            <input type=\"checkbox\" v-model=\"flag.shareAll\">\n                        </div>\n                    </div>\n                    <div class=\"item\" v-if=\"!flag.shareAll\">\n                        <div class=\"col-sm-2 label\">勾选模块</div>\n                        <div class=\"col-sm-10 full-text\">\n                            <label v-for=\"item in modules\" class=\"api-share-cm-label\">\n                                <input type=\"checkbox\" name=\"moduleId\" value=\"{{item.id}}\"> {{item.name}}</label>\n                        </div>\n                    </div>\n                    <div class=\"item\">\n                        <div class=\"col-sm-2 label\">名称</div>\n                        <div class=\"col-sm-10\">\n                            <input type=\"text\" name=\"name\" maxlength=\"20\" class=\"text\" placeholder=\"请输入分享的名称\">\n                        </div>\n                    </div>\n                    <div class=\"item\">\n                        <div class=\"col-sm-2 label\">阅读密码</div>\n                        <div class=\"col-sm-10\">\n                            <input type=\"text\" name=\"password\" maxlength=\"10\" class=\"text\" placeholder=\"请输入阅读密码\">\n                        </div>\n                    </div>\n                    <div class=\"item\">\n                        <div class=\"col-sm-2 label\"></div>\n                        <div class=\"col-sm-10\">\n                            <button class=\"btn btn-default-box middle\" tabindex=\"3\"\n                                    v-on:click=\"status.shareCreateModal=false\">返回\n                            </button>\n                            <button class=\"btn btn-primary middle\" v-on:click=\"shareCreate\" tabindex=\"2\">确定</button>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n    <!-- modal list end -->\n</template>\n\n<!-- loading start -->\n<template v-if=\"status.loading\">\n    <div class=\"spinner\">\n        <div class=\"double-bounce1\"></div>\n        <div class=\"double-bounce2\"></div>\n    </div>\n</template>\n<!-- loading end -->\n";

/***/ })
]);